- 締切済み
条件が多数のエクセルデータマッチング
似たような質問探したのですが、不明のため質問します。 エクセルVBAで下記のマクロの作成したいのです。 ファイル1:aaa.XLS ・・・集計するデータ ファイル2:bbb.XLS ・・・マッチング判定のリスト 二つ用意します。 ファイル1にあるB列のデータ(文字)、ファイル2にA列にあるデータ(文字)が一致した場合、一致した行にあるファイル2のB列にある文字を一致したファイル1のS列に表示させるマクロの作成を考えてます。 ただそのファイル2のマッチング判定が100個あり、100個それぞれとのマッチングを考えてます。 つまりファイル2の001~100の通りのマッチングをするマクロ(プログラム)です。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17070)
色々質問に書いているが、ファイル1とファイル2が 1対1 1対多 多対1 多対多 のどれか、が重要で、マッチングは (1)ファイル1のB列、ファイル2のA列をソートしておく。 (2)マッチングのロジックを使う。そこで、本件は1対多らしい。 >001~100の通りのマッチングをするマクロ これは何か勘違いがあると思う。マッチングのロジックという、 情報処理試験にも、アルゴリズムとフローチャートの健ででていた 処理の流れをご存知かな。 http://dospara.okwave.jp/qa3419667.html に私のものの他の例が載っている。 ーー 文章化すると スイッチ1をON=>両方ファイル読む設定 (1)ファイル1を1行読む スイッチ1ONか、ONのとき(2)へ、OFFの時(3)へ (2)ファイル2を1行読む スイッチ1OFF (3)両キーを比較=>(4)(5)(6)の3通りあり (4)等しい場合 メイン処理(文字列の連結?) 繰り返しのための行き先に3通りあり Aスイッチ1ONに「して(1)へ BスイッチオOFFにして(1)へ CスイッチIFFにして(2)へ 処理によって異なる。1対多はCが多い。 (5)ファイル1Key<ファイル2Key (1)へ行く(キーの小さいほうを採りに行くということ) (6)ファイル1Key>ファイル2Key (2)へ行く(キーの小さいほうを採りに行くということ) ーーー 初めての方には難しいかも知れないが、100回ずつ比較を繰り返さないことを考えるなら、上記のようなのが能率が良い。
お礼
さっそくの回答ありがとうございました。 考え方が大分理解できてきました。 ちょっと説明難しいのですが、 具体的に言うと多対多になります。 ファイル2に A B 1 01 Aグループ 2 02 Bグループ 3 03 Cグループ ・・・ 100 となってまして、 ファイル1B列に ファイル2A列とマッチングさせ それぞれマッチングしたら ファイル2のB列のデータをファイル1のS列へ書き込みとしたいです。 B S 1 03 Cグループ 2 01 Aグループ 3 02 Bグループ としたいのです。 再度ご教授頂けたら幸いです。