マクロ 2つのEXCELシートの情報を統合

このQ&Aのポイント
  • ファイルAのシートにある情報にファイルBの情報を付属する方法について教えてください。
  • 具体的には、ファイルAのB列(名前列)とファイルBのC列(名前列)を比較し、一致すればファイルAのD列にファイルBの結果情報を付加します。
  • 結果的に、ファイルAとファイルBの名前列を一致させ、ファイルAのシートにファイルBの結果を追加することが目的です。
回答を見る
  • ベストアンサー

マクロ 2つのEXCELシートの情報を統合

【やりたいこと】 ファイルAのシートにある情報にファイルBの情報を付属する。 (1)ファイルAのB列(名前列)を上から順に1つずつ、ファイルBのC列(名前列)から検索 (2)完全一致すればその行に付随しているA列(結果)の情報をファイルAのD列につけていく。 ■ファイルAのシート(シート名:sheet2) ----------------------------------- A列(NO)  B列(名前)  C列(出欠) 1    ヤマダタロウ     出席 2    ハナダモモコ     出席 3    テストジロウ      出席 ・ ・ ・ ・ ■ファイルBの1つ目のシート ------------------------------------ A列(結果)  B列(性別)  C列(名前) 合格       男       テストジロウ 合格       女       ハナダモモコ 不合格      男       ヤマダタロウ ・ ・ ・ ★↓↓完成イメージ↓↓★ ファイルAとファイルBの名前列で一致させファイルAの「sheet2」シートの 後ろにファイルBの結果を付属する。 ----------------------------------------------------- A列(NO)  B列(名前)  C列(出欠)  D列(結果) 1      ヤマダタロウ     出席    不合格 2      ハナダモモコ     出席    合格 3      テストジロウ      出席    合格 ・ ・ ・ どなたか、ご教示の程お願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • ytsg
  • ベストアンサー率58% (7/12)
回答No.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の一番下のセルを認識して使うのが理想です。

nanacolobiyaoki
質問者

お礼

ご丁寧にありがとうございました。 無事できました。 >Vlookup関数は左端列でマッチングさせて一致した行の*列目の値を >表示しますが、 そうですよね、そうですよね。 Match関数は初めて使い、とても勉強になりました! 本当にありがとうございました。

関連するQ&A

  • EXCLEのマクロ 2つのシートを統合する方法

    下記のことを行いたいのです。 教えていただけないでしょうか。 下記2つのシートをA列をキーにして sheet1のあ、b、c列のデータに sheet2のc、d列を 統合して、sheet1のdれつ e列に統合して5列のデータを作りたい a列とb列のデータは基本同じですが、スペースが入っていたり 違う場合もある。B列はsheet1のデータを採用 sheet2は不要 ・sheet1 a列 b列 C列 123 ああ 123456 456 いい 125456 789 うう 12344556 1234 ええ 12345678 4567 おお 123456456 8945 かか 1234567844 ------------------- ・sheet2 a列 B列 C列 D列 123 ああ 03-5212-0000 東京都○ 456 いい 06-5212-0000 大阪府○ 789 うう 044-5212-0000 神奈川県○ 1234 ええ 045-512-0000 横浜市○ 4567 おお 043-212-0000 埼玉県○ 8945 かか 03-5212-0000 東京都○

  • エクセルの文字内の空白の削除

    EXCELの表の列に下記のようにカタカナで氏名が入っています。 ヤマダ タロウ ヤマダジロウ できれば、全て空白を詰めて下記のように修正したいのですが、エクセルの関数若しくはBVAでは可能でしょうか??trim関数は前後の空白だけ削除ですよね?? 宜しくお願いします ヤマダタロウ ヤマダジロウ

  • sheet1、sheet2の値をsheet3に集めたい。

    エクセルについて教えてください。 山田君のテストの結果 sheet1に、中間テスト結果A1B1C1D1E1、 sheet2に、期末テスト結果A1B1C1D1E1があり、 sheet3のA1B1C1D1E1、A2B2C2D2E2に 移動させていと考えています。 されに、小島さんのテスト 中間テスト結果が、sheet1のA2B2C2D2E2、 期末テスト結果が、sheet2のA2B2C2D2E2 にあり、それら2つを sheet3のA3B3C3D3E3、A4B4C4D4E4 に続けて移動させたいです。 実際は、2人だけではなく、 約200人以上を続けてsheet3に集めたいと思っています。 連続的に集めるためには、 どうすればよいか教えてください。 よろしくお願いします。

  • エクセル 複数シートのデータを1シートにまとめるマクロ

    エクセルの複数シートにデータがあります。同じ条件の人のデータだけをひとつのシートにまとめたいのですが、マクロを教えていただけますでしょうか。それとも、マクロ以外に良い方法がありますか? エクセル初心者なので、あたりまえのことも知らないかもしれません。。。  【データ】 ●シート1からシート20まで、同じ配列でデータがあります。 ●1行目は見出しです。2行目から1人づつのデータです。(多くても65行までと思っています。) ●A列に到達度、B列に出欠をいれました。 ●C列からM列が氏名、課題、その他のデータです。 ●リストはシート21にあります。  【こんな作業でしょうか?】 ●シート1から20で A列が「C」または「D」ならば その行のA列からM列をコピーして シート21のA列からM列に形式を値にして張り付ける ●シート1から20で B列が「欠」ならば その行のA列からM列をコピーしてシート21のA列からM列に形式を値にして張り付ける (っというのが私の乏しい知識で考えた方法なのですが、これでは不具合がでますか? もちろん、この方法じゃなくもっといいのがあれば、それをやってみたいです。)

  • EXCELの技に関する質問

    EXCELに詳しい方がいらっしゃいましたら、すみませんがお教えください。 EXCELであるシートに以下のように一定ではない並びで「名前(年齢)」と複数のセルに入力してあったとします。 【BEFORE】 ヤマダ ハナコ(25)           ヤマダ タロウ(52) スズキ ジロウ(13) この時、この年齢に1歳加え、以下のような状態にしたいと思っています。 【AFTER】 ヤマダ ハナコ(26)           ヤマダ タロウ(53) スズキ ジロウ(14) そこで、上記のように3つくらいであれば普通に年齢を手補正すればいいのですが、数が大量にある時に、何か簡単にプラス1歳をしていく方法はありませんでしょうか? ややこしいことに、いろんな年齢の人がいるので置換を使っても手間がかかりますし、名前と年齢がひとつのセルに文字列として入っているうえ、列などが一定ではないので「=A2+1」といった簡単な数式を使うわけにもいきません。 (これは何かというと人名年齢入りの会社の組織図みたいなものなのです) どなた何か良いアイディアがありましたらどうぞよろしくお願い致します。

  • Excel2003 2つのシートから相互にセルの値を変更したいのですが

    Excel2003を使用して2つのシートにあるセルの値を相互に変更できるようにしたいのですが。 例えば Sheet2 のセル A1 に =Sheet1!A1 と入力しておけば Sheet1 のセル A1 に 80 と入力すると Sheet2 のセル A1 は 80 と表示されますが,この状態で Sheet2 のセル A1 に別の値を入力すると,もう Sheet1 のセル A1の値を参照しなくなってしまいます。 そこで教えていただきたいことがあります。 Sheet1 のセル A1 に値(例えば80)を入力すると Sheet2 のセル A1 の値も同じ値(例えば80)になり,逆に Sheet2 のセル A1 に値(例えば80)を入力すると Sheet1 のセル A1 の値も同じ値(例えば80)になるように相互に値が変化できるようにしたいのです。 具体的に私がしたいことは (1) Sheet1 ~Sheet6 の A列 には同じ40人の名簿を使う。 (2) Sheet1 の B列 には国語の得点,同様に Sheet5 まで社会,数学,理科,英語の得点を入力。(本来は複数のテストの合計得点として, K列 にしたいのですが,今回は B列 ということでお願いします。) (3) Sheet1 ~ Sheet5 のセル D1 にそれぞれの教科の合格に必要な得点を入力。 (4) Sheet1 ~ Sheet5 の C列 には =if(B2>=D1,"○","×") のような数式を入力し,合格なら○,不合格なら×を表示するようにする。 (5) Sheet6 の B列 ~ F列 にはそのぞれの教科の○,×が参照されるようにし,B列 ~ F列の42行目にそれぞれの教科の合格に必要な点数が参照されるようにする。 (1)~(5)をすれば, Sheet1 ~ Sheet5 を見れば教科ごとの合格者が分かり, Sheet6 を見たときに誰がどの教科で合格か不合格か分かります。 Sheet6 の全教科の合格者数をみて,それぞれの教科の合格に必要な点数を上げたり,下げたりしたいのです。 Sheet1 ~ Sheet5 に戻れば,合格に必要な点数の上げ下げが可能なのですが, Sheet6の B列 ~ F列 の42行目でも合格に必要な点数の上げ下げをできるようにしたいのです。もちろん Sheet6 で合格に必要な点数を上げ下げしたときには, Sheet1 ~ Sheet5 の合格に必要な点数をも反映されるようにしたいのです。 長文で分かりにくいかもしれませんが,いい方法があれば教えてください。よろしくお願いします。

  • Excel半角より前の文字のみ抽出…マクロ?

    Microsoft Excel2007で住所録を編集中です。 現在、B列に半角カタカナで氏名(苗字 名前 という形で苗字と名前の間に半角スペースが入っています)が何千行と記入されている状態です。 これを、空白(全く未記入)のA列に、苗字のみをコピー(切り取りではなくコピー)して貼りつけたいのですが、どうすれば良いでしょうか? A列:空欄 B列:ヤマダ タロウ ↓ A列:ヤマダ B列:ヤマダ タロウ としたいのです。 なぜこうしたいかと申しますと、住所が半角・全角バラバラに記入されて一人ずつ入っており、家族ごとにソートしたいためです。 優先順位をつけて昇順に並べ替えようと思っており、優先キー1:苗字、優先キー2:郵便番号、優先キー3:住所、にして、同じ住所を見つけやすくしたいのです。 同じ住所を見つけて、全て半角などにそろえようと思っております。 B列の苗字名前の間には必ず半角が入っています。 半角より前の文字のみ、抽出(というかコピー)のやり方を教えて下さい。 エクセルは、言われた通りに書式を打ち込んだり、簡単な計算をしたり、簡単なグラフをつくったりできるレベルで、マクロは記述していただいたものをコピー&ペーストで使うことができるくらいの、初心者レベルですが、そうか宜しくお願いします!

  • シート1の情報をシート2に移動させる

    シート1 100社 .... A B C D 1 A社 100 東京 2 B社 50 大阪 3 C社 200 東京 4 D社 10 福岡 5 E社 300 東京 6 F社 150 大阪 シート2 100社のうちの50社 ...... A B C D 1 A社 佐藤社長 Aランク 2 C社 鈴木社長 Bランク 3 F社 山田社長 Aランク 簡単な例でご説明します。 上記のシート1は、すべての客先が入っています。 それに対し、シート2は重要客先だけに絞った(抽出した)別のデータです。 例えば100社あったら50社。 シート2はシート1にない情報も含まれているため、そのシート2だけにあるB列の山田社長、鈴木社長及びC列のAランク、Bランクなどの情報をシート1の、A、B、C、D社のD列、E列に追加で入力したいという考えです。 シート1とシート2がそれぞれ100社であれば、シート2のB列及びC列の情報をまとめてコピーペーストで移せるのですが、シート1とシート2の1行、2行、3行の行が異なる為、簡単にコピーペーストだけではできない状況です。。 このような場合、どのようにすれば簡単にシート2の情報をシート1に移せるか、教えて頂けますか。

  • マクロ(Excel)で検索して値の返し方について

    マクロの初心者です。関数でいうvlookupなどを使って、 検索した値を反映させるマクロをお教え下さい。 ファイル名「担当ID.xls」のB列へ「顧客名簿.xls」から 検索したC列(地域)を返したいです。 お手数おかけしますが、全くの初心なので、マクロの 説明コメントも記載して頂けると助かります。 ■ファイル名:担当ID.xls 列A         B      C 顧客番号 地域  担当ID A-1111       ?  os123 A-2222       ?  nr456 A-3333       ?  wk789 ■ファイル名:顧客名簿.xls ■シート名:Sheet1 列A      B     C 顧客番号  名前   地域 A-1111   A   大阪 A-2222   B   奈良 A-3333   C   和歌山 以上です。よろしくお願いいたします。

  • excel2000マクロ記述方法

    抽出条件方法のマクロ記述 1つのファイルのシートの中にデータがあります。 例ファイル名a.xlsシート名マスター     B列 C列   D列    E列 項目名 倉庫  翻訳  ソート  非表示項目     A057 レオナ工場  1     A870 セ新港    2    Y     A887 セ日向    3 もう1つのファイル 例ファイル名B.xlsシート名WORK     A列   B列   c列    d列    E列    連結コード  品名  倉庫 出荷1  加工1  AA 0G120 0G120  A870 0 0 0 AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0 抽出条件方法 シート名WORKのデータの中のC列と、シート名マスターのB列の倉庫を参照して 非表示項目のYが入っていない、倉庫と同じデータをシート名WORKのデータを抽出したい 場合のマクロ記述の方法を教えてください。よろしくお願いします。 (抽出表示方法) AA 0H120 0H120  A057 0 0 0 AA 0S0100 0S010  A887 0 0 0     

専門家に質問してみよう