• 締切済み

EXCELについて

iwao32と申します。EXCELについて教えてください。(全くの初心者です。) sheet 1               sheet 2 A列   B列           A列    B列 1     10            4      d 2     20            5      e 3     30            2      b 4     40            3      c 5     50            1      a という2つのsheetがあるとき(A列は共通だが並んでいる順番が違い、B列はそれぞれ別のもの)、sheet3に、 A列   B列   C列 1     10     a 2     20     b 3     30     c 4     40     d 5     50     e のように、結合したいのですが、なるべく簡単なやり方をお教え下さい。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

ANo.1です。 > 手元のデータをまだ良く確認していないのですが、おっしゃるとおり、Sheet1のA列とSheet2のA列は、並びが違うだけでなく、Sheet1のA列にあってSheet2のA列にないということはあると思います。その場合、Sheet2のその行は丸ごとないということになっていると思います。 私の書き方が良くなかったですかね。 「Sheet1のA列にあってSheet2のA列にない」だけなら、『Sheet3のA列の値はSheet1をそのまま使う』で、良いのですが、Sheet1のA列が1,2,3、Sheet2のA列が3,4,5の様に、Sheet1・2それぞれに片側だけにしかない値(例の場合、1,2と4,5)があると面倒になります。 今回の質問はこの面倒なパターンは無しですか?有りですか?

iwao32
質問者

お礼

mt2008様 パソコンがしばらく使えなかったので、レスポンスが遅くなってしまいました。申し訳ありませんでした。 大変参考になりました。とりあえずやってみます。またつまずいたら質問させてください。 皆様から頂いたご回答全てがベストアンサーなので、一つだけ選べませんでした。ご了承ください。 どうもありがとうございました。 iwao32

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

シート1に有ってシート2に無い、シート2に有ってシート1に無いデータをもシート3に表示させることとなると単純な方法と式というわけにはいきません。 シート2では作業列を作って対応するのがよいでしょう。 なお、いずれのシートも1行目は項目名で2行目から下方にデータが入力されているとします。 シート2のC1セルには次の式を入力します。 =COUNTA(Sheet1!A2:A1000) シート2のC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(OR(A2="",COUNTIF(Sheet1!A:A,A2)>0),"",MAX(C$1:C1)+1) そこでお求めの表をシート3に作るわけですがA2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)<=COUNTA(Sheet1!$A$2:$A$1000),IF(COLUMN(A1)<=2,INDEX(Sheet1!$A:$B,ROW(A1)+1,COLUMN(A1)),IF(COLUMN(A1)=3,IF(COUNTIF(Sheet2!$A:$A,$A2)=0,"",VLOOKUP($A2,Sheet2!$A:$B,2,FALSE)),"")),IF(ROW(A1)<=MAX(Sheet2!$C:$C),IF(COLUMN(A1)=1,INDEX(Sheet2!$A:$A,MATCH(ROW(A1),Sheet2!$C:$C,0)),IF(COLUMN(A1)=3,INDEX(Sheet2!$B:$B,MATCH(ROW(A1),Sheet2!$C:$C,0)),"")),"")) シート1に有ってシート2に無いデータについてはシート1のA列とB列のデータがAおよびB列に表示されC列は空白となります。シート1に無くシート2のみにあるデータについてはA列とC列にデータが表示されB列は空白となります。 いずれにしてもシート3にはシート1及びシート2のデータが漏れなく表示されます。

iwao32
質問者

お礼

KURUMITO様 パソコンがしばらく使えなかったので、レスポンスが遅くなってしまいました。申し訳ありませんでした。 大変参考になりました。とりあえずやってみます。またつまずいたら質問させてください。 皆様から頂いたご回答全てがベストアンサーなので、一つだけ選べませんでした。ご了承ください。 どうもありがとうございました。 iwao32

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

シート1,シート2に12345があれば該当するデータを検索し,無ければ何も表示しないという式を並べます。 手順: シート3のB1には =IF(COUNTIF(Sheet1!A:A,A1),VLOOKUP(A1,Sheet1!A:B,2,FALSE),"") シート3のC1には =IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2,FALSE),"") とそれぞれ記入し,下向けにコピーします。 #IFもCOUNTIFもVLOOKUPも,いちばん基本のエクセルの関数です。  逆に言うとこれらの関数が使いこなせれば,Excel初級卒業です。

iwao32
質問者

お礼

keithin様 パソコンがしばらく使えなかったので、レスポンスが遅くなってしまいました。申し訳ありませんでした。 大変参考になりました。とりあえずやってみます。またつまずいたら質問させてください。 皆様から頂いたご回答全てがベストアンサーなので、一つだけ選べませんでした。ご了承ください。 どうもありがとうございました。 iwao32

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 まず、Sheet3のA1セルに次の数式を入力して下さい。 =IF(INDEX(Sheet1!A:A,ROW())="","",INDEX(Sheet1!A:A,ROW()))  次に、Sheet3のC1セルに次の数式を入力して下さい。 =IF(OR($A1="",COUNTIF(Sheet2!$A:$A,$A1)=0),"",VLOOKUP($A1,Sheet2!$A:$B,2,FALSE))  次に、Sheet3のA1セルをコピーして、Sheet3のB1セルに貼り付けて下さい。  次に、Sheet3のA1~C1の範囲ををコピーして、同じ列の2行目以下に貼り付けて下さい。  以上です。

iwao32
質問者

お礼

kagakusuki様 パソコンがしばらく使えなかったので、レスポンスが遅くなってしまいました。申し訳ありませんでした。 大変参考になりました。とりあえずやってみます。またつまずいたら質問させてください。 皆様から頂いたご回答全てがベストアンサーなので、一つだけ選べませんでした。ご了承ください。 どうもありがとうございました。 iwao32

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

補足願います。 Sheet1のA列とSheet2のA列は並びが違うだけで同じデータですか? Sheet1には10は無いけどSheet2にはある……なんて事はありませんか?

iwao32
質問者

補足

ご指摘ありがとうございます。 手元のデータをまだ良く確認していないのですが、おっしゃるとおり、Sheet1のA列とSheet2のA列は、並びが違うだけでなく、Sheet1のA列にあってSheet2のA列にないということはあると思います。その場合、Sheet2のその行は丸ごとないということになっていると思います。