No2です。
書き方が分かりづらかったですね、すみません。
1,シート1に入力した検索条件の組み合わせが重複している場合
1行目のA~C列に「ムンク、秋、雲」があり、3行目にも「ムンク、秋、雲」がある場合、
1行目にも3行目にも「55」の検索値が表示されます。
もちろん、組み合わせが異なれば重複とはなりません。
2,シート2のデータで、検索条件の組み合わせに該当するデータが重複している場合、
No3でお話した通りとなります。
シート2のデータで、その検索条件の組み合わせに該当する、行数の最も高い値が表示されます。
(5行目のA~C列に「ムンク、秋、雲、55」があり、
10行目にも「ムンク、秋、雲、70」の場合は「70」が表示されます。)
それから、今頃気づいて申し訳ないのですが・・・・、
わたしがお話していた式の内容は、
「複数の検索条件で検索し、その組み合わせに該当する重複データの最も高い行の検索値を表示させる方法」でした。
お望みのものと大きくずれていたかもしれません。
もしもシート2のデータの中に、検索条件の組み合わせに該当するデータが重複していないのであれば、
検索条件を結合してmatch関数とindex関数で簡単に検索できます。
《シート2》
検索するための作業列(E列)を作り、以下の式を入力して下方向へコピーします。
=A3&B3&C3
《シート1》
シート1のE列にも検索するための作業列を作り、同様に下方向へコピーします。
=A1&B1&C1
検索値を表示したい列に以下の式を入力(範囲は適宜修正してください)
=IF(ISNA(MATCH(E3,Sheet2!E3:$E$16,0)),"",INDEX(Sheet2!$A$3:$E$16,MATCH(E3,Sheet2!$E$3:$E$16,0),4))
こちらの場合、上記の式ほど重くならないと思いますし、タイトル行や空欄の行の縛りはなくなります。
仮にシート2に検索条件の組み合わせに該当するデータが重複していたとしても、最初に検索されたデータが表示されます。
データを下の行に追加していく場合で、複数の検索条件に該当し、かつ最初に入力されたデータがほしい場合に向いていると思います。
No2の式は、データを下の行に追加して行く場合で、複数の条件に該当し、かつ直近の入力のデータがほしい場合ですね。
もしも、No2の式をお使いになるようでしたら、式の訂正をさせて頂きます。
シート1のA~Cに入力した検索条件に一致するデータがない場合、
その式が入力された行と同じ行の値(シート1の5行目の式では、シート2の5行目の検索値)が表示されてしまうことがわかりました。
理由は分かりませんが、index関数で行又は列が「0」の場合に起こるようです。
そのため、検索条件の組み合わせに該当するものがなかった場合に空欄を表示させるために、
式を以下のように訂正しました。
=IF(MAX(INDEX((Sheet2!$A$3:$A$16=$A1)*(Sheet2!$E$3:$E$16)*(Sheet2!$B$3:$B$16=$B1)*(Sheet2!$C$3:$C$16=$C1),0,0))>0,INDEX(Sheet2!$A$1:$D$16,MAX(INDEX((Sheet2!$A$3:$A$16=$A1)*(Sheet2!$E$3:$E$16)*(Sheet2!$B$3:$B$16=$B1)*(Sheet2!$C$3:$C$16=$C1),0,0)),4),"")
これだと、そうとう処理が重たくなるとは思いますが・・・。
至急マークでのご質問に対し、何度も訂正や補足で申し訳ありません。
お礼
何度もお手数をお掛けして申し訳ありません。 なにぶんデーター量が膨大なので何とも言えませんが、恐らく、データーの重複は無いと思いますので、match関数+index関数で行けると思いますので、そちらでやってみます。 本当に助かります。有難う御座いました。