プロが教える店舗&オフィスのセキュリティ対策術

添付のエクセル魚拓の黄色部分B2~B5に検索条件を入力すると青の部分D4に結果(日時の部分)が抽出されるようにしたいのですが、
自分でいろいろ調べて下記のような関数を入れてみましたが、結果が表示されません。。。
=INDEX(D7:O1000,SUMPRODUCT((A8:A1000=B2)*(B8:B1000=B3)*(C8:C1000=B4)*ROW(A8:A1000)),MATCH(B5,7:7,0))
どうしたらいいのか、どこをなおしたらいいのか詳しい方教えてください。
もしくは他に方法があればご教授頂きたいです。
宜しくお願い致します。

表はA7:O1000で作ってます。
画像が小さいかもしれませんがおねがいします。。。

「エクセルで4つの条件から結果を抽出する方」の質問画像

A 回答 (5件)

No.1です。



大きな勘違いをしていました。
前回の回答は無視してください。

D8~O1000の範囲で四つの条件に該当するデータを表示しなければならなかったのですね。
↓の数式に変更してください。

=INDEX(D8:O1000,SUMPRODUCT((A8:A1000=B2)*(B8:B1000=B3)*(C8:C1000=B4),ROW(A8:A1000)-7),MATCH(B5,7:7,0)-3)&""

※ A~C列の三つの条件が重複するコトはない!という前提です。m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
うまくいきました!
たすかりました^^

お礼日時:2017/04/27 20:32

SUMPRODUCTとか使うのも良いですが、


配列計算は重くなる元なので、
個人的にはIDの列を作る事をお勧めしています。

この場合A,B,Cの条件によって分かれているので、
仮にAA列にIDを表示させるとして、
AA8=A8&"-"&B8&"-"&C8
といった風にします。
A,B,Cの条件が同じものが複数ある場合は、
COUNTIFによってそれが何個目かも合わせて表示させます。
AB8=AA8&"-"&COUNTIF(AA$8:AA8,AA8)
これで、AA8で表示させたものと同じデータがAA列の8行目からその行までにいくつ表示されたか、
を含めたIDを表示させる事が可能です。
当然ながら、表のデータと同じ数だけコピーしてください。

欲を言えば、これらの表示を表の左側に挿入すれば、VLOOKUPで簡単に検索できるのですが、
大概表の形状を決定した後で、抽出したいけどどうすれば…表の形状は変更できません。という状態になってしまっているので、
その場合は、MATCHによってIDが一致する行を判断し、INDIRECTで抽出したいセルのデータを表示させる。
という流れになります。

AA列にIDがある前提で式を書きますね。
=INDIRECT(ADDRESS(MATCH(B2&"-"&B3&"-"&B4,AA:AA,FALSE),MATCH(B5,7:7,FALSE)))
行だけではなく列も変化する為、ADDRESSを用いています。
(列の指定を番号で行う事になるので、列番号を列名に変換する為に使っています)
これで、AA列の中でB2&"-"&B3&"-"&B4と一致するセルの行番号、7行目の中でB5と一致するセルの列番号、
を元に、両方に一致する行・列のセルのデータを表示させる事が可能となりました。
一致するものがない場合はエラーが表示されます。
    • good
    • 0
この回答へのお礼

>大概表の形状を決定した後で、抽出したいけどどうすれば…表の形状は変更できません。という状態になってしまっているので
まさにその通りでした…
別の方法も詳しくご提示頂きありがとうございます。
今回は訳あってSUMPRODUCTでいきましたが、すごい使いやすい方法を教えていただけたので次回から参考にさせて頂きます^^

お礼日時:2017/04/27 20:01

フィルタオプションの方がいいのでは?

    • good
    • 0

=INDEX(D7:O1000,SUMPRODUCT(…


を ↓
=INDEX(D1:O1000,SUMPRODUCT(…
にしたら、どうなりますか?
    • good
    • 0

こんばんは!



=SUMPRODUCT((A8:A1000=B2)*(B8:B1000=B3)*(C8:C1000=B4)*(OFFSET(A8:A1000,,MATCH(B5,7:7,0)-1)<>""))

または
=COUNTIFS(A8:A1000,B2,B8:B1000,B3,C8:C1000,B4,OFFSET(A8:A1000,,MATCH(B5,7:7,0)-1),"<>")

こんな感じでよいのでしょうか?

※ エラー処理はしていません。m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!