プロが教えるわが家の防犯対策術!

2つの表の同じIDが左の表の開始日と終了日の間に右の表の該当日が当てはまるとき、右の表に開始日と終了日を関数を使って引っ張りたいです。
画像のG列とH列のように関数で引っ張ってきたいのですが、お教えいただけますでしょうか。

「該当日が期間内に当てはまる場合、開始日と」の質問画像

A 回答 (4件)

No1です。



>Filter関数が使えませんでした
その場合はローテクで、
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($A$3:$A$10)/($A$3:$A$10=$E3)/($B$3:$B$10<=$F3)/($C$3:$C$10>=$F3),1)),"")
とか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
まさに理想の答えで大変助かりました。
この度はありがとうございました。

お礼日時:2022/11/21 16:24

期間の表は同じIDで期間が重複することはない。

つまり
①ID:Aで2022/4/1~2022/5/10
②ID:Aで2022/4/10~2022/7/20
というようなケースだとID:Aの4/1~4/10は①②の両方に含まれることになってしまいます。
このようなことはないという前提であれば、添付画像のように、G3に

=IFERROR(INDEX(B:B,1/(1/SUMPRODUCT(($B$3:$B$10<=$F3)*($C$3:$C$10>=$F3)*($A$3:$A$10=$E3)*ROW($3:$10)))),"")

という数式を入れて右方向、下方向へコピーという手もあります。
※1.ちなみに、上記①②のような期間とIDの重複があると上記数式では正しい結果が得られません。
※2.fujillinさんの数式であれば、上記のような重複があっても行番号の若いデータが優先して表示されることになります。
「該当日が期間内に当てはまる場合、開始日と」の回答画像4
    • good
    • 0
この回答へのお礼

詳しくご説明いただきありがとうございます。
同じIDで期間が重複することはないので上記の方法でも抽出できました。
ありがとうございました。

お礼日時:2022/11/22 08:45

元表がIDごとに必ず期間が昇順で並んでいるということが前提なら



G3=SUMIFS($B3:$B$7,$A3:$A$7,E3,$B3:$B$7,"<="&F3)
H3=SUMIFS($C3:$C$7,$A3:$A$7,E3,$B3:$B$7,G3)

$の位置を間違えないでください。
これを下にコピーし、表示形式を「yyyy/m/d;;;」にする
とかでどうでしょうか?

質問の際にはバージョンの記載はお忘れなく。
    • good
    • 0
この回答へのお礼

ありがとうございます。
思っていた通りの抽出ができました。

お礼日時:2022/11/21 12:56

こんにちは



Filter関数が使える環境として・・

G3セルに、
=INDEX(FILTER(B$3:C$100,(A$3:A$100=E3)*(B$3:B$100<=F3)*(C$3:C$100>=F3),""),1,)
を入力して、下方にフィルコピーではいかがでしょうか?
    • good
    • 0
この回答へのお礼

早急なご回答ありがとうございます。
Filter関数が使えませんでした。filterの代わりにCOUNTIFで連番を作ってみたのですがうまくできませんでした。
filterの代わりとなる関数はございますでしょうか。

お礼日時:2022/11/21 12:17

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