スキル
エクセルマクロでの、2つの表をマッチングするやり方のバリエーション
小川慶一さんの投稿
2019年12月23日5:57
エクセルマクロでの、マッチングのバリエーションについて順を追って説明しました。
もともとは、以下のような質問がきたのがきっかけ:
>1つのExcelに2つのsheetがあり、1つの対比sheetには左に今月、右に前月のデータを横並びにし、差異を対比できるようにしています。
>データはNo.で管理しています。もう1つのsheetには前月のデータのみを入れています。
>行はデータNo.で列は項目とし、列10列くらいは毎月変わりませんが、行は5000行以上あり毎月追加削除が発生するので変わります。
>
>発展1を参考に対比sheetに今月データを貼り付けた後に、前月sheetからで該当するデータを転記する。該当するNo.がない場合はデータの下部に転記する。最後に横並びにしたデータを対比し差異に色をつける、というマクロを作りました。
>ですが、行も列も多くちょっと時間がかかるため、配列を使ってやってみようと思いました。
>
>そこで確認ですが、配列化するのはこの事例でいうと転記元の前月のデータ(5000行10列)を1つの配列とし、該当するNo.の必要な列を、今月列=前月列として転記する。で合っていますか?
>
>転記先の対比sheetの転記列や、検索No.列も別の配列にしたほうがいいのかなど、配列にした方が良い基準がいまいちわからないのですが‥
>よろしくおねがいいたします。
要約すると、こういうこと↓ですね。
>For Next構文を複数組み合わせることでマッチングをできるようになった。
>ただし、データの件数が多いため、マクロ実行時間短縮のため、より高速にマッチングできる方法を求めている。
>そこで、配列を使うとマッチングを高速化できるのではなのではないかと考えた。
>ついては、この見立ては適切かどうか教えてほしい。
>また、適切だということならば、より具体的な方針について相談したい。
ということなのですが...。
実は、このテーマ、配列は関係ありません m(_ _)m
マッチングのパフォーマンスが配列を使うと改善するか?というと。
するにはしますが、そんなに劇的には変わらないです。
マッチングのパフォーマンスを上げるための進化のプロセスは、以下のとおりです。
[1] For Next構文を複数組み合わせることでマッチングをできるようになる
[2] For Each構文を複数組み合わせることでマッチングをできるようになる
[3] Findメソッドを使うことでマッチングをできるようになる
[4] SQLのSELECT文を使うことでマッチングできるようになる
続きは、以下を参照ください。
https://www.exvba.com/comment_detail.php?comment_id=11669
2023年05月30日 06:59
小川慶一さん
2023年05月29日 08:07
荏隈 直樹さん
2023年05月28日 05:57
小川慶一さん
2023年05月28日 05:55
小川慶一さん
2023年05月27日 20:28
荏隈 直樹さん