エクセルの関数で複数条件一致時にデータを出力する方法

このQ&Aのポイント
  • エクセルの関数を使用して、複数の条件が一致した時に特定の列のデータを出力する方法について質問があります。
  • 具体的な例を挙げて説明します。2つのシートがあり、それぞれA~Dの列と1~3の行で構成されています。シート1とシート2の特定の列で複数の条件が一致した場合、シート2の別の列のデータをシート1の特定の列に表示したいです。
  • データが量が多いため、オートフィルを使用して同じ数式をシート1のC列に適用する方法も知りたいです。
回答を見る
  • ベストアンサー

エクセルの関するに関する質問です!

現在データを分析したくエクセルを使用しているのですが 関数の使い方で分からないものがあるため質問を致します。 2つのシート間で複数の条件が一致した時、特定の列にあるデータを出力するという関数を書きたいです! 【例】→「」で囲まれたのがデータです。A~Dは列を表し、(1)~(3)は行を表しています ・シート1    A   B   C   D (1)  「1」 「4」    (2)  「2」 「5」 ☆ (3)  「3」 「6」    ・シート2    A   B   C   D (1) 「3」  「4」 (2) 「2」  「5」 ★ (3) 「1」  「6」 上記のエクセルがあった場合で説明をさせて頂きます。 シート1とシート2で複数条件で同一なものを同一視させます この例においては(2)行目A列・B列の「2」「5」が一致しています。 その時シート2のC列にある「★」のデータを シート1の「☆」に表示したいです! データは量が多いのでオートフィルで同じ数式をシート1のC列すべてのセルに適応したいです! 分かりにくい質問で大変恐縮です! これらを実現させるための関数を使った条件式を教えてください!! 理解しづらいところに関しては補足にて対応致します! 宜しくお願い致します!!!!!!!!!

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

A列とB列を連結した文字で判定してよいなら(A列が1でB列が21とA列が12でB列が1のデータが存在しない条件なら)Sheet2のC1セルに以下の式を入力して下方向にオートフィルすればご希望のデータを表示することができます。 =IFERROR(INDEX(Sheet2!C:C,MATCH(A1&B1,INDEX(Sheet2!$A$1:$A$1000&Sheet2!$B$1:$B$1000,),0),),"")&"" #上記の数式はSheet2のC列のデータが文字列の場合ですので、日付や数値の場合は以下のような数式にする必要があります。 =IF(A1="","",IFERROR(INDEX(Sheet2!C:C,MATCH(A1&B1,INDEX(Sheet2!$A$1:$A$1000&Sheet2!$B$1:$B$1000,),0),),""))

ko2imple
質問者

お礼

どうもありがとうございます! 一発で解決することができました!!

その他の回答 (4)

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

C1に =IFERROR(INDEX(Sheet2!C:C,TEXT(MAX(INDEX((Sheet2!A$1:A$300=A1)*(Sheet2!B$1:B$300=B1)*ROW(Sheet2!C$1:C$300),)),"#")),"") と記入、以下コピーします 既出回答の一つと非常によく似た数式ですが、既出回答は間違っています。 #参考 >理解しづらいところ 理解は簡単ですが、説明がヌケてる点が多数あります ●ご利用のエクセルのバージョンが不明。場合によって回答の数式は使用できません ●「多数」とは具体的に最大何行か不明。数千件を超えてデータがある場合は、これらの方式では無く全く違う方法を使います ●「☆」とかは具体的に「文字」なのか「数値」なのか不明。数値の場合は、ご利用のエクセルのバージョンによっては、もっと遥かに簡単な数式で計算できます これらの事に配慮しながら、ご相談では情報提供してみて下さい。今回はいいので次回以降のご参考に。

ko2imple
質問者

お礼

ご指摘有難うございます!! 今後気を付けます!

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

一例ですが。。。 Sheet1!C1=IFERROR(INDEX(Sheet2!$C$1:$C$3,SUMPRODUCT(MAX((Sheet2!$A$1:$A$3=A1)*(Sheet2!$B$1:$B$3=B1)*ROW(Sheet2!$A$1:$A$3)))),"")

ko2imple
質問者

お礼

有難うございます!! 参考にさせて頂きました!

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

こんばんは! 作業用の列を設ける方法が判りやすいと思います。 ↓の画像で左側がSheet1・右側がSheet2とします。 Sheet2の作業列E2セルに =IF(COUNTBLANK(A2:B2),"",A2&"_"&B2) という数式を入れフィルハンドルでずぃ~~~!っと下へコピーしておきます。 そしてSheet1のC2セルに =IF(COUNTIF(Sheet2!E:E,A2&"_"&B2),INDEX(Sheet2!C:C,MATCH(A2&"_"&B2,Sheet2!E:E,0)),"") という数式を入れフィルハンドルで下へコピー! これで画像のような感じになります。m(_ _)m

  • kkkkkm
  • ベストアンサー率65% (1579/2414)
回答No.1

シート1のC1に =IF(A1&B1=Sheet2!A1&Sheet2!B1,Sheet2!C1,"") で下にフィルする でいいのでしょうか。

ko2imple
質問者

お礼

有難うございます!!

関連するQ&A

  • Excelでどのような関数を使えばいいでしょうか。

    関数について教えて下さい。 Excelで、同じBook内に以下のような2シートがあるときに、 (Sheet1)    A   B    C   D     1  1  あい   12  りんご 2     うえ   34  みかん   3     おか   56  イチゴ 4  1  おか   78  イチゴ (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3     おか   78   イチゴ 4     うえ   34   みかん  Sheet2のA列にSheet1にあるデータを入れたいのです。 まず、列B,C,Dのそれぞれのデータが横に3つ一致するものを探して 横3つのデータが同じなら、Sheet2のA列に、 Sheet1のA列にあるデータをシートBにも持ってくる、 というようなイメージです。 (Sheet2)    A   B    C    D     1     あい   11   りんご 2     うえ   34   みかん   3  1  おか   78   イチゴ 4     うえ   34   みかん      ↑このようにしたいのです。 A列にどのような関数を入れればいいのでしょう。 (A列にあるのは1か空欄かのどちらかです。 同じ3つの組み合わせで、1の場合と空欄の場合両方があることはありません。) また、Sheet2には、A列に1とついた行に色を付けたいのです。 例えば、上記の例ですと Sheet2のB3:D3のセルに色をつけたいのです。 関数や条件付書式などで、できますでしょうか。

  • エクセル2003での質問です

    エクセルの関数の質問です  例えばですが、シート1をデータシートして、A列に日付とし、B列にりんごの種類、C列にみかんの種類  D列にいちごの種類とした時に、シート2を検索シートとした場合、検索シートのA1に特定の日付を  入力した時、B1に特定の条件で表示出来る方法が知りたいです。  通常、はD1列(いちごの列は、データが全て入っています)の「いちご」を表示させ、  B列にりんごを入力した場合は「りんご、いちご」と表示させ  C列にみかんが入力された時は、「みかん」と表示させたいのです。   (B、C列は日付により「みかん」だけ、「りんご」だけとかあります) よろしくお願いします。

  • EXCELの関数について

    EXCELの関数について エクセルの関数で複数条件の場合の計算について 例 A列…日付 B列…支店名 C列…処理科目 D列…金額 ある支店の日付の範囲を指定し科目別金額の合計値を別シートに算出したいのですが、 SUMIF関数では、条件の範囲が設定できないみたいなので SUMPRODCUTを使っても同一列での条件設定でうまくいきません。 なにかうまい方法はありませんか

  • エクセルの質問です。

    エクセルで 複数列 複数行で合計の出し方教えてください。 行A1 A B1 5 C1 B D1 4 A2 B B2 3 C2 D2 3 答えとしてほしい数字は A 5  B 7 C 3 となるように関数にしたいのですが 方法がありませんか?    

  • excelでデータを別シートに引っ張ってきたい

    excelで値を検索し、返す時、返す値の横にあるデータを違うシートのセルの下に一緒に引っ張ってきたいときの関数(方法)を教えてください。 素人なので分かりにくいと思いますが、お知恵をお借りしたいと思います。 あるデータのシートの検索値を別シートに持ってきたいのですが、シート1をシート2のようにしたいのです。 /は空白 例)シート1 /A B C D E 1(1) □ ○ ▽ ◎ 2 (2) ▼ ■ ◇ ◎ シート2 / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 分かりにくいかもしれませんが、 シート1の(1)(A1)を検索すると、シート2(B1)に□(これはVLOOKで引っ張ってこれるのはわかります。) 次にシート1の(C1)○をシート2の(B2)へ持ってきたいのです。シート1(D1)(E1)はシート2の(C2)(D2)へ。 しかもシート1のC列は空白セルもあり、シート1のC列が空白の場合、下にずれることなくシート1の(D1)(E1)はシート2の(C1)(D1)へ。下記<図a>のようになるようにしたいのです。 そして、シート2のA列に検索値として入力する(1)や(2)の値は連番ではなく、(2)の次に(5)に飛んだりします。(2)の行のC列にデータがあっても、(5)のC列にデータはないこともあります。<図b> <図a> /A B C D 1 (1) □ ▽ ◎ 2 (2) ▼ ◇ ◎ <図b> / A B C D 1 (1) □ 2 /○ ▽ ◎ 3 (2) ▼ 4 /■ ◇ ◎ 5 (5) □ ▽ ◎ 6 (7) ▼ ◇ ◎ vlookとかCLUMN関数とか考えてはみたのですが、どうもうまくいきません。 毎回作成するデータなのですが、毎回コピペで作成しています。 とても面倒なので(1)を検索したらデータが一瞬で検索できるようにしたいと試みてはみたものの、私の知識では不可能でした。 関数では無理なのでしょうか。。。 関数はあまり詳しくないので分かりやすい方法があれば、教えていただければ助かります。 関数に詳しい方、よろしくおねがいいいたします。 関数にはこだわっていません。違う方法があればそれも含めておねがいいたします。

  • エクセルの関数についての質問です。エクセルは2003です。

    エクセルの関数についての質問です。エクセルは2003です。 A列とB列とC列には数字(金額)が入っております。 A列とB列を比較して一致するものには○(マル) 不一致には×(バツ)を付けるにはIF関数で倫理式にA=B 真の場合に○ 偽の場合に× と設定すれば出来ると思うのですが A列とB列とC列の3つの列を比較してD列に○×を付けたいのですが方法が 分かりません。A列とB列が同じでもC列がAとBと違うなら×というように 3つの列が同じ場合のみ○ どれかひとつの列で違うなら×と表示させたい のです。素人ですので伝えにくいですが宜しくお願い致します。

  • エクセル 複数の条件に一致

    複数の条件に一致したセルの内容によって、別のセルに別の文字を自動で表示したいのですが可能でしょうか? 詳細はこのような形で、 【シート1】       A     B       C 1      0001     3/1    有 2      0002     3/1    無 3      0001     3/2    不明 【シート2】       A     B       C 1             3/1      3/2 2      0001       ○      △ 3      0002       ×     "空欄" ・シート2のB2からC3を自動で表示できるようにしたい。 ・シート1のA列とシート2のA列が一致、更にシート1のB列とシート2の1行が一致。 ・シート1のC列が「有」の場合「○」、「無」の場合「×」、「不明」の場合、「△」、「空欄」の場合、「"空欄"」と表示。 知りうる限りの関数を合わせてみましたが、できませんでした。 どなたかいい方法を教えて頂ければと思います。 環境はXPpro、エクセル2000です。 宜しくお願いします。

  • エクセルの関数についてです

    大変恐縮ですが、エクセルの関数について教えていただきたいと思います。 例 A B C D 1 175 141 210 98 2 47 70 417 39 3 64 845 32 626 4 79 194 54 85 5 224 68 85 110 上記A列からD列の数字が1行目から5行目まで5セットあります。 その中でAはBより大きくCより小さい(B<A<C)なおかつBはAより小さく Dより大きい(A>B<D)。 と、この条件を両方満たしている行だけを抽出したいと考えております(例では1行目が該当します)。 手元に約6万行分のデータがあり、何とか関数で処理したいものの詳しく分からず困っています・・・。 お忙しいところ申し訳ございませんが、どなたか関数をご存じでしたら 教えてくださると幸いです。 よろしくお願い致します。

  • エクセル2つのセルを1つのデータとして一致

    エクセル初心者です。 (1)シートのA列には店舗名(A列には同じ店舗名が複数あります)とB列には数値を入力しています。(2)のシートには(1)シート同様のデータが入力されていますがCとD列に値があります。 (1)シートの同行内のAとB列を1つのデータとして(2)のシートのAとB列が一致したらCとD列の値を(1)シートに返す事は可能でしょうか? (1)シート A列    B列   C列   D列 ヤマダ   25 スズキ   10 ヤマダ   100 (2)シート A列    B列   C列   D列 ヤマダ   25    5    英 スズキ   10    6    独 ヤマダ   100    6 仏 さくら  20    8 英 つたない説明で申し訳ありません。

  • エクセル関数についてです。

    教えて下さい。 シート2のD列に以下の条件の計算結果を出したいのです。 シート2のA列、B列を文字列で入力します。 参照場所はシート1のA列、B列です。 シート2のA列とB列に入力したものが、 シート1のA列B列に物と一致した項目でシート1のD列の合計をシート2のDに計算で出したいのです。 例 シート2 A1「タイヤ」 B1「Z」と記入    シート1 A1「タイヤ」、A2「ホイール」、A3「タイヤ」          B1「Z]、B2「X」、B3「Z」          D1「1000」、D2「400」、D3「2000」 となっている場合に    シート2のD1にに1000+2000=3000となるように計算式をつくりたいのです。 参照が1つの場合(A列のみ)はSUNIF関数でできたのですが、2つができません。ちなみにエクセル2000です。 よろしくお願いいたします。               

専門家に質問してみよう