Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4631 / 76734 ←次へ | 前へ→

【77721】Re:縦並びを横並びにしたいです。
発言  γ  - 15/12/6(日) 13:58 -

引用なし
パスワード
   まず気づくのは、マッチしたあとも比較を続けていること。
マッチして作業が終わったら Exit Forするとそれだけでも 1/2 になります。

ただこのような場合、一つずつ突き合わせをしていくのは効率が悪いです。
Dictionaryというデータ構造を使うと、それに備わった高速の検索機能が活かせて、
もっと早く突き合わせができます。
これを使うと良いと思います。

例えば、こんな書き方です。(未検証なのでまちがっていたら失礼)

Sub yokonarabi2()
  Dim dic As Object
  Dim i As Long, ii As Long
  Dim r As Long
  Dim saishuA As Long, saishuE As Long
  
  Set dic = CreateObject("Scripting.Dictionary")
  'A列(コード)の最終セル
  saishuA = Cells(Rows.Count, 1).End(xlUp).Row
  'E列(作業列)の最終セル
  saishuE = Cells(Rows.Count, 5).End(xlUp).Row
  
  For ii = 2 To saishuE
    dic(Cells(ii, 5).Text) = ii
  Next

  For i = 2 To saishuA
    r = dic(Cells(i, 1).Text)
    Range(Cells(i, 2), Cells(i, 3)).Copy _
      Destination:=Cells(r, Columns.Count).End(xlToLeft).Offset(0, 1)
  Next
End Sub

1 hits

【77720】縦並びを横並びにしたいです。 さと 15/12/6(日) 12:50 質問[未読]
【77721】Re:縦並びを横並びにしたいです。 γ 15/12/6(日) 13:58 発言[未読]
【77725】Re:縦並びを横並びにしたいです。 さと 15/12/6(日) 18:18 お礼[未読]
【77722】Re:縦並びを横並びにしたいです。 β 15/12/6(日) 14:39 発言[未読]
【77723】Re:縦並びを横並びにしたいです。 β 15/12/6(日) 15:23 発言[未読]
【77727】Re:縦並びを横並びにしたいです。 さと 15/12/6(日) 18:53 お礼[未読]

4631 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free