Excel VBA質問箱 IV

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

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


44895 / 76732 ←次へ | 前へ→

【36846】Re:累積計算を高速で行うには?
発言  Ned  - 06/4/15(土) 12:50 -

引用なし
パスワード
   こんにちは。
>データ量が膨大
という事ですので、Excelにも限界はあると思いますよ。
早目にAccessや他のデータベースソフトに切り替えられた方がいいかもしれませんね。

>今回の処理は結局5万*5万回=25億回の処理
んー…Dictionaryの内部的にどういう処理が行われているのか知りませんが、
5万×5万ではないような気がします。
この辺り詳しい方がいらっしゃいましたら、レスがあるかもしれません。

>Dic(a(i, 1)) = Dic(a(i, 1)) + a(i, 2)
>If Dic.exists(di) Then x(j, 1) = Dic.Item(di)
この時にどういう処理がされているかですね。
少なくとも、総当りではないでしょう。
Keyを割り当てながら加算していき、
取り出す時に該当Keyを探しに行っている処理ですから。
この時は、DictionaryのKey(50000)→Key(1)の順に探しに行っているようです。
(仮にKey(1)を50000回取り出しても、それほど時間はかかりませんが)
重複値を検査する時にexistsメソッドは高速で便利なのは確かですね。
3 hits

【36798】累積計算を高速で行うには? カド 06/4/14(金) 8:53 質問
【36801】Re:累積計算を高速で行うには? ごんぼほり 06/4/14(金) 10:05 回答
【36802】Re:累積計算を高速で行うには? ごんぼほり 06/4/14(金) 10:16 発言
【36813】Re:累積計算を高速で行うには? Ned 06/4/14(金) 15:23 発言
【36821】Re:累積計算を高速で行うには? カド 06/4/14(金) 17:29 お礼
【36824】Re:累積計算を高速で行うには? Ned 06/4/14(金) 18:09 発言
【36841】Re:累積計算を高速で行うには? Ned 06/4/15(土) 1:16 発言
【36842】Re:累積計算を高速で行うには? カド 06/4/15(土) 8:17 お礼
【36846】Re:累積計算を高速で行うには? Ned 06/4/15(土) 12:50 発言

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