- ベストアンサー
マクロ 2つのEXCELシートの情報を統合
- ファイルAのシートにある情報にファイルBの情報を付属する方法について教えてください。
- 具体的には、ファイルAのB列(名前列)とファイルBのC列(名前列)を比較し、一致すればファイルAのD列にファイルBの結果情報を付加します。
- 結果的に、ファイルAとファイルBの名前列を一致させ、ファイルAのシートにファイルBの結果を追加することが目的です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ファイルAのシートのD列に結果を表示する方法です。 ファイルAのシートのD1セルに下記式を入力します。 データ数が定かでないのでファイルBのSheet2には100件のデータがある想定とします。 =INDEX([ファイルB.xls]Sheet2!A1:A100,MATCH(B1,([ファイルB.xls]Sheet2!C1:C100,FALSE),1) ************************************************************ Vlookup関数は左端列でマッチングさせて一致した行の*列目の値を表示しますが、 今回のような場合、マッチング列が左端にないのでIndex関数とMatch関数を使います。 ・MATCH(検査値,検査範囲,照合の型) 検査値=名前のB1セル、検査範囲=ファイルBのSheet2の名前入力範囲、照合の型=FALSE ※照合の型はVLOOKUP関数と同じで、FALSEを指定すれば一致する値のみ取得してきます。 MATCH関数でデータの相対位置が分かったら、INDEX関数で欲しいデータを拾います。 ・INDEX(配列,行番号,列番号) 配列=欲しいデータの含まれるファイルBのSheet2のデータ範囲、行番号=MATCHで取得した行番号、列番号=左端から1列(Vlookupと同じ) 関数について詳しくはExcelのヘルプを参照してください。 ************************************************************* 1件取得できたら、式をコピーすれば全てのデータが取得できます。 必要に応じて式を値固定するなどします。 ここまでの処理をマクロの記録すれば初心者でもマクロ作成できます。 ※今回100件と想定していますが、件数が不定の場合、想定最大件数で式としては成立します。 でも、何件になるか分からないから65536(Excel2003までの最大行数)ね、というような指定をしておくと、計算に時間がかかったりするので注意してください。(今回の例ならさしてかかりませんが(^^ゞ) ※マクロ内でファイルBのSheet2の一番下のセルを認識して使うのが理想です。
お礼
ご丁寧にありがとうございました。 無事できました。 >Vlookup関数は左端列でマッチングさせて一致した行の*列目の値を >表示しますが、 そうですよね、そうですよね。 Match関数は初めて使い、とても勉強になりました! 本当にありがとうございました。