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

複数の条件を満たすセルの値を返したいのですが、条件の一つがややこしく、
関数を組み合わせても上手くいきません・・・。
どなたかご教授の程、宜しくお願い致します。


  A   B  C D  E F  G   H
1 太郎 600 10 19 ○ 太郎 600 24
2 太郎 600 20 29 △ 太郎 600 15
3 花子 800 10 19 □
4 花子 800 20 29 ☆

上記のような表があります。
F1に太郎、G1に600、H1に入力した値がC1からD1の範囲内の
数値ならE1を返せるようにしたいのです。
C列とD列に同じ値がある為、E1とE3を上手く返せず困っております。

何卒、宜しくお願い致します。

質問者からの補足コメント

  • 補足致します。
    ・A~E列には値が入っていて、F~H列に入力して結果を得たいのでしょうか?

    ⇒仰る通り、A~Eは値・F~Hは入力欄となります。

    ・C列とD列は、必ずD列の方が大きい数字ですか?C列が大きかったり、C列とD列が同じ数字になることはありますか?
    ・「C1からD1の範囲内」とは、=も含みますか?

    ⇒必ずD列が大きく、同じ数字になる事はありません。また、範囲内とは=は含ませたいです。

    ・A1とA2は太郎でB1とB2は600ですが、C1~D1の範囲とC2~D2の範囲は、重複することはあるのでしょうか?

    ⇒重複することはありません。

    ・「E1を返せるようにしたい」とは、E1の値をどのセルに表示したいのでしょうか?

    ⇒どこでも構わないのですが、I列の1とさせて下さい。

    拙文で申し訳ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/05/12 06:41

A 回答 (3件)

もう少し説明をお願いします。



・A~E列には値が入っていて、F~H列に入力して結果を得たいのでしょうか?

・C列とD列は、必ずD列の方が大きい数字ですか?C列が大きかったり、C列とD列が同じ数字になることはありますか?

・「C1からD1の範囲内」とは、=も含みますか?

・A1とA2は太郎でB1とB2は600ですが、C1~D1の範囲とC2~D2の範囲は、重複することはあるのでしょうか?

・「E1を返せるようにしたい」とは、E1の値をどのセルに表示したいのでしょうか?
この回答への補足あり
    • good
    • 1

元の表に連番が降ってあるなら SUMIFSで済む話しですが



=IFERROR(LOOKUP(1,0/(A$1:A$4=F1)/(B$1:B$4=G1)/($C$1:$C$4<=H1)/(D$1:D$4>=H1),E$1:E$4),"")
    • good
    • 1
この回答へのお礼

無事解決致しました!!
有難う御座いました!!

お礼日時:2018/05/16 13:12

関数を使うなら、№2のLOOKUPが良いと思います。




マクロであれば、こんな感じです。
Sub test()

Dim i As Integer 'データテーブルの行
Dim j As Integer '抽出テーブルの行

Dim soi As Integer 'データテーブルの開始行
Dim soj As Integer '抽出テーブルの開始行
Dim eoi As Integer 'データテーブルの最終行
Dim eoj As Integer '抽出テーブルの最終行

soi = 1 'データテーブルは1行目から もし3行目からなら3にする
soj = 1 '抽出テーブルは1行目から もし3行目からなら3にする


eoi = Cells(Rows.count, 1).End(xlUp).row
eoj = Cells(Rows.count, 6).End(xlUp).row

For j = soj To eoj
For i = soi To eoi
If Range("A" & i).Value = Range("F" & j).Value And _
Range("B" & i).Value = Range("G" & j).Value And _
Range("C" & i).Value <= Range("H" & j).Value And _
Range("D" & i).Value >= Range("H" & j).Value Then

Range("I" & j).Value = Range("E" & i).Value

End If
Next i
Next j

End Sub
    • good
    • 1

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