この手の AだったらB、AじゃなくてCだったらDみたいな処理を繰り返すなら IFS関数がお勧めです。
で、優先されるべきものから先に処理してくわけです。
質問には、「当日以降は空欄」と書かれてますが、想定の4月10日が 3が入ってるので、希望を「翌日以降は空欄」と理解します。でも、この当日判定の前に、そもそもA列の開始日が空欄だったら空欄がよいと思われるので、以下の順で処理していきます。
$A2="","", → 開始日(A列)が空欄だった空を返す
C$1>TODAY(),"", → 1行目の日付が今日より大きい(明日以降)なら空を返す
C$1<$A2,1, → 1行目の日付が開始日(A列)より小さければ 1
$B2="",2, → 終了日(B列)が空欄だったら 2
C$1<$B2,2, → 1行目の日付が終了日(B列)より小さければ 2
C$1>=$B2,3 → 1行目の日付が終了日(B列)以上なら 3
と、これをIFS内に並べればよいだけです。(ORとかAND使ってもいいですが、わかりやすくした形)
=IFS($A2="","",C$1>TODAY(),"",C$1<$A2,1,$B2="",2,C$1<$B2,2,C$1>=$B2,3)
これをC2入れて、あとはセルをコピペ。
ARRAYFORMULAでバッと一気にやりたいなら IFと組み合わせたほうがいいんで、以下のような感じ。
(もっと綺麗にできそうだけど)
=ARRAYFORMULA(IF($A2:$A="","",IF(C$1:$1>TODAY(),"",1+IF($A2:$A<=C$1:$1,1+IF($B2:$B="",0,IF($B2:$B<=C$1:$1,1,0)),0))))
やりたいことを数式化(フローチャート化)するって大事。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/16 11:46