• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで複数条件で抽出した複数データを出力)

Excelで複数条件で抽出した複数データを出力

このQ&Aのポイント
  • Excelで複数条件で抽出した複数データを出力したい
  • Sheet1のセルAとセルBの複数条件でSheet2を検索し、一致したSheet2のセルCをSheet1の該当するセルCに入れたい
  • Excelで複数条件を指定してデータを抽出し、他のシートに出力する方法を知りたい

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.2・3です。 配列数式にしない方法にしてみました。 ↓の画像のようにSheet2に作業用の列を1列設けます。 作業列D2セルに =A2&B2 という数式を入れD2セルのフィルハンドルでダブルクリックしておきます。 そしてSheet1のC2セルに =IFERROR(INDEX(Sheet2!C:C,MATCH(A2&B2,Sheet2!D:D,0)),"") という数式を入れオートフィルで下へコピー! これで画像のような感じになります。m(_ _)m

abc999xyz
質問者

お礼

ありがとうございます。 1つ手順がありますが、簡単で良いですね。

その他の回答 (3)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です。 作業列を使わない方法にしてみました。 尚、配列数式にしていますので、データ量が極端に多い場合はおススメしません。 (3000行程度であれば問題ないと思いますが、1000行まで対応できる数式にしています) Excel2007以降をお使いだとして・・・ ↓の画像で右側がSheet2で左側のSheet1のC列に結果を表示させるとします。 Sheet1のC2セルに =IF(COUNTIFS(Sheet2!A:A,A2,Sheet2!B:B,B2),INDEX(Sheet2!C$1:C$1000,SUMPRODUCT((Sheet2!A$1:A$1000=A2)*(Sheet2!B$1:B$1000=B2)*ROW(A$1:A$1000))),"") 上記数式をShift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は、ドラッグ&コピー! Sheet1のC2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能のまま)Shift+Ctrl+Enterで確定! 数式の前後に{ }マークが入り配列数式になります。 このC2セルをオートフィルでコピーすると 画像のような感じになります。m(_ _)m

abc999xyz
質問者

お礼

ありがとうございます。 別シートを使わずに行うのは良いです。 INDEX、SUMPRODUCTとかの関数は使ったことがないので、 勉強なります。

abc999xyz
質問者

補足

1000行のリミットを外して、大きくしたら結果は得られましたが、負荷がかかり遅くなります。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 質問のデータの並びを拝見すると 複数条件ではないですよね? 「名前」と「ID」は必ず一致しているようなので 単純にVLOOKUP関数だけででると思うのですが・・・ Sheet1のC2セルに =IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:C,3,0),"") または =IF(COUNTIF(Sheet2!B:B,B2),VLOOKUP(B2,Sheet2!B:C,2,0),"") という数式を入れオートフィルでコピー! 質問内容通りであればこれで大丈夫だと思います。 ※ 実際のデータはA列・B列が一致していない!という場合は No.1さんが回答されていらっしゃるように作業用の列を設ける必要があると思います。m(_ _)m

abc999xyz
質問者

お礼

ありがとうございます。 説明不足ですみません。 Sheet1のA列とB列のNAMEとIDが、 Sheet2のA列とB列の名前とIDが、 一致したものを抽出するなので、 複数条件となります。

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

 今仮に、Sheet3のA列を作業列として使用するものとします。  まず、Sheet3のA2セルに次の関数を入力して下さい。 =IF(OR(INDEX(Sheet2!$A:$A,ROW())&INDEX(Sheet2!$B:$B,ROW())="",INDEX(Sheet2!$C:$C,ROW())=""),"",INDEX(Sheet2!$A:$A,ROW())&"◆"&INDEX(Sheet2!$B:$B,ROW()))  次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に(Sheet1のリストの行数を上回るのに充分な行数となるまで)貼り付けて下さい。  次に、Sheet1のC2セルに次の関数を入力して下さい。 =IF(OR(INDEX($A:$A,ROW())="",INDEX($B:$B,ROW())=""),"",IF(COUNTIF(Sheet3!$A:$A,INDEX($A:$A,ROW())&"◆"&INDEX($B:$B,ROW())),INDEX(Sheet2!$C:$C,MATCH(INDEX($A:$A,ROW())&"◆"&INDEX($B:$B,ROW()),Sheet3!$A:$A,0)),"【該当無し】"))  次に、Sheet1のC2セルをコピーして、Sheet2のC3以下に貼り付けて下さい。  以上です。

abc999xyz
質問者

お礼

ありがとうございます。 別シートを利用し、そこで計算させて表示させるのですね。 使ったことのない関数とかあるので、まず、関数の使い方 から理解が必要です。 勉強になります。

abc999xyz
質問者

補足

> Sheet3のA2セルをコピーして、Sheet3のA3以下に(Sheet1のリストの行数を上回るのに充分な行数となるまで)貼り付けて下さい。 ⇒Sheet3のA2セルをコピーして、Sheet3のA3以下に(Sheet2のリストの行数を上回るのに充分な行数となるまで)貼り付けて下さい。 でないと正しく結果がえられませんでした。

関連するQ&A