- Excel VBA 質問スレ Part33
945 :デフォルトの名無しさん[]:2014/06/27(金) 00:47:50.48 ID:tthd8i7m - 配列の操作に関して教えてほしいんですが
2重ループにしないで(For j=・・・・・なしに)配列を一発で 代入できないでしょうか? k=0 For i = LBound(Arry1, 1) To UBound(Arry1, 1) if とある条件 then k=k+1 For j = LBound(Arry1, 2) To UBound(Arry1, 2) Arry2(k, j) = Arry1(i, j) Next end if Next
| - Excel VBA 質問スレ Part33
951 :945[]:2014/06/27(金) 01:01:09.42 ID:tthd8i7m - >>948
無理ですか ありがとうございます この前に少し重い処理があって それを含めて 全体をもっと効率化できないかと考えておりました 重い処理の方をもっと効率化するように考えてみます。
| - Excel VBA 質問スレ Part33
967 :945[]:2014/06/27(金) 02:59:21.01 ID:tthd8i7m - >>959
えっとごめんなさい >2重ループにしないで(For j=・・・・・なしに)配列を一発で が主眼で if とある条件 then をつけないと Arry2 = Arry1 でいいじゃんとかいわれそうで付けた 説明不足で申し訳ありません 実際の処理は以下なんです 当初これで質問しようとしてたんだけどここまで聞くのは どうなのかって感じでもっとシンプルな質問に変えたんです(^^; (ソート処理をFunction化したものの 一部なんだけどね) 配列 Arry(1 TO n,1 TO m) 配列 Sortdata(1 TO n)・・・・実際は2次元配列だけど 説明上1次元としている があって 配列Sortdataは 1〜n の 数値が 入っていて(同じ数値は入っていない) 配列Arryのインデックス値に対応してます 配列Dataを元に 配列Arrayの配置を変えたいのです。 Sortdata(1) = 100 なら 配列Arry(100, j) → 配列Arry(1, j) Sortdata(5) = 200 なら 配列Arry(200, j) → 配列Arry(5, j)って感じで ※配列Arryのある列をキーにして昇順になるように 配列Sortdataが作られていると考えて下さい。 'Orgin配列へ書戻し Arry_Copy = Arry For i = LBound(Sortdata, 1) To UBound(Sortdata, 1) For j = LBound(Arry, 2) To UBound(Arry, 2) Arry(i, j) = Arry_Copy(Sortdata(i), j) Next Next PS. ソート処理本体を バブルソート から クイックソート に変えようとアルゴリズム勉強中です(^^
| - Excel VBA 質問スレ Part33
978 :945[]:2014/06/27(金) 04:39:09.43 ID:tthd8i7m - >>975
たしかにそれでも出来るけど それ用のシート作らんとだめだし処理速度的にどうなんだろうか 配列内ソートの方が圧倒的に早いと思うんだけど 数百件程度のソートでは低速といわれてるバブルソートでも使えたけど 数千件のソートで処理速度的に不満が出てきたので効率化できないかなと >>975 のやり方も含めて検討してみる ありがとう あとは個人的な興味もありクイックソートも勉強中してみるっス さて さすがに眠いな そろそろ仮眠タイムなので寝るっす ではでは
| - Excel VBA 質問スレ Part33
989 :945[]:2014/06/27(金) 14:55:39.03 ID:tthd8i7m - >>980さん >>984さん ありがとうございます。
>>967でもちょっと書いたけど >(ソート処理をFunction化したものの 一部なんだけどね) 各プロシージャで使われる共通Functionなんです なんでIn/Outの配列仕様は変えたくないのです(あっちこち変更しないとだから) そのごく一部の処理で 元々数百件のデータを扱うもりで書いた処理が データ量増加で 数千件に肥大してまい処理時間がかかるようになり その主要因が 件の共通Functionだったのです。 とは言えそもそも 呼び足し元の処理自体もデータ量増加に対応出来てない部分もあるんで >>980さんの言われるとおり 根本から見直したほうがよさそうです(D/B利用も含めて) >>984さん そうゆう手法もありですね今後の参考にさせてもらいます。
|
|