Excel VBA質問箱 IV

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

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


61662 / 76732 ←次へ | 前へ→

【19684】Re:Do・・・While・・・Loopを使って連番処理
回答  ちゃっぴ  - 04/11/14(日) 21:57 -

引用なし
パスワード
   >MatchingのアルゴリズムをDo…Loopで書かれている
>このコードはどのような意味を指すのでしょうか?

そんな難しいものではありませんよ。
配列vntList1とvntList2があり、双方のDataがSort済みであるとします。
(わかりやすいように、dataはすべて数値だとします。)

で、最初から順番に大小を比べていくわけですが、
vntList1が大きい場合には、vntList2のDataを一個進める
vntList1が小さい場合には、vntList1のDataを一個進める
双方が一致した場合には処理を行う
こんな感じです。

このようなアルゴリズムですと、Data全件をMatchingするのに
双方の配列の要素数だけLoopすることになるので、処理が高速化されます。

つまり、Loop回数は
vntList1の要素数 + vntList2の要素数 回

2重Loopして全件Matchingするときとでは速度がダンチです。

For i = 1 To UBound(vntList1)
  For j = 1 To UBound(vntList2)
    If vntList1(i) = vntList(j) Then
  Next j
Next i

これだと、vntList1の要素数 * vntList2の要素数 回
Loopすることになりますよね?
2 hits

【19535】Do・・・While・・・Loopを使って連番処理 YN61 04/11/7(日) 16:20 質問
【19536】Re:Do・・・While・・・Loopを使って連番処... かみちゃん 04/11/7(日) 16:25 回答
【19539】Re:Do・・・While・・・Loopを使って連番処... YN61 04/11/7(日) 17:20 お礼
【19542】Re:Do・・・While・・・Loopを使って連番処... ちゃっぴ 04/11/7(日) 19:04 発言
【19634】Re:Do・・・While・・・Loopを使って連番処... YN61 04/11/11(木) 19:33 お礼
【19683】Re:Do・・・While・・・Loopを使って連番処... YN61 04/11/14(日) 21:28 質問
【19684】Re:Do・・・While・・・Loopを使って連番処... ちゃっぴ 04/11/14(日) 21:57 回答
【19715】Re:Do・・・While・・・Loopを使って連番処... YN61 04/11/15(月) 21:20 お礼
【19947】Do・・・While・・・Loopを使って連番処理 YN61 04/11/19(金) 20:01 お礼
【19954】Re:Do・・・While・・・Loopを使って連番処... ちゃっぴ 04/11/19(金) 22:30 回答

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