Excel VBA質問箱 IV

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

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


10549 / 76734 ←次へ | 前へ→

【71731】Re:表の整理
発言  UO3  - 12/4/3(火) 16:54 -

引用なし
パスワード
   ▼ドカ さん:

こんにちは

↑でアップしたTest3とTest4の比較は、見る人が見たらインチキだといわれるかも
しれません。
Dictionaryのほうは、5万件のデータをDictionaryに取り込むところがあるわけで、
それに対して検索は5けんだけなので。

しかし、少なくとも Test1,Test2 の比較においては、差はあまりないといえども
Dictionaryのほうが、「やや遅い」わけで
>「Dictionary」より速いコードを見たことがありません。
似たいすr、1つの答えになっているのではと思います。

で、Test3,Test4の比較ですが、TestGen2 の 後半のループの
For i = 1 To 5 これを For i = 1 To 1000
このように検索実行の数を 5件から1000件にしてみましょう。
それでも、Test4 のほうが、かなり早いことがわかると思います。

で、もう一つ、その早い Test4 と極めてよく似たTest5を。
これは、同じように見えるロジックなのに、めちゃめちゃ遅いです。

なので、Dictionary は、常に、そんなに悪くない結果が得られる。
一方、自作のアルゴリズムは、そのデータに適した処理ロジックか否かで
遅くなったり、早くなったりする。
いわゆる職人の腕の見せ所という側面がでてきます。

Sub Test5()
  Dim c As Range
  Dim myTime As Double
  Dim myA As Range
  Dim x As Long
 
  myTime = Timer   '計測開始
 
  Application.ScreenUpdating = False
 
  With Sheets("Sheet1")
    With .Range("A1", .Range("A" & .Rows.Count).End(xlUp))
      Set myA = .Columns(1)
    End With
  
    For Each c In .Range("D1", .Range("D" & .Rows.Count).End(xlUp))
      x = WorksheetFunction.Match(c.Value, myA, 0)
      c.Offset(, 1).Value = .Range("B" & x).Value
    Next
  End With
  Application.ScreenUpdating = True
 
  MsgBox Timer - myTime

End Sub
21 hits

【71555】表の整理 ドカ 12/3/16(金) 20:43 質問
【71557】Re:表の整理 ドカ 12/3/16(金) 20:54 発言
【71559】Re:表の整理 何か変じゃないですか 12/3/16(金) 22:44 発言
【71561】Re:表の整理 ドカ 12/3/17(土) 4:42 発言
【71560】Re:表の整理 UO3 12/3/16(金) 23:09 発言
【71562】Re:表の整理 ドカ 12/3/17(土) 4:57 お礼
【71564】Re:表の整理 UO3 12/3/17(土) 9:39 回答
【71671】Re:表の整理 ドカ 12/3/27(火) 14:10 質問
【71672】Re:表の整理 UO3 12/3/27(火) 16:43 発言
【71673】Re:表の整理 UO3 12/3/27(火) 17:20 発言
【71674】Re:表の整理 ドカ 12/3/27(火) 20:11 発言
【71675】Re:表の整理 ドカ 12/3/28(水) 9:08 お礼
【71676】Re:表の整理 UO3 12/3/28(水) 10:34 発言
【71677】Re:表の整理 ドカ 12/3/28(水) 11:10 発言
【71678】Re:表の整理 UO3 12/3/28(水) 15:08 発言
【71679】Re:表の整理 UO3 12/3/28(水) 15:13 発言
【71683】Re:表の整理 ドカ 12/3/28(水) 20:34 お礼
【71688】Re:表の整理 ドカ 12/3/30(金) 8:29 質問
【71689】Re:表の整理 ドカ 12/3/30(金) 9:06 質問
【71690】Re:表の整理 UO3 12/3/30(金) 10:27 発言
【71691】Re:表の整理 UO3 12/3/30(金) 11:46 発言
【71692】Re:表の整理 UO3 12/3/30(金) 21:10 発言
【71720】Re:表の整理 UO3 12/4/2(月) 14:10 発言
【71724】Re:表の整理 ドカ 12/4/3(火) 7:59 お礼
【71728】Re:表の整理 UO3 12/4/3(火) 13:16 発言
【71731】Re:表の整理 UO3 12/4/3(火) 16:54 発言
【71725】Re:表の整理 ドカ 12/4/3(火) 8:15 質問
【71726】Re:表の整理 UO3 12/4/3(火) 12:39 発言
【71727】Re:表の整理 UO3 12/4/3(火) 12:44 発言
【71736】Re:表の整理 ドカ 12/4/4(水) 15:59 お礼

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