答え1
この画像では、セル A2 に基準値を入力しまし た。
列 E から H では、数式がデータの最初の行 (スプレッドシートの行 3) に入力され、範囲の一番下までコピーされます。
列 E には、前の行から値を取得するための数式があります。
=IF(ISTEXT(B2),0,B2)
列 F には、現在の行 (列 B) の値がセル A2 の条件よりも大きく、前の行 (現在は列 E) の値がセル A2 の条件以下であるかどうかを計算する数式があります。この数式は、条件よりも大きい行のグループが始まる行に 1 を返します。
=IF(AND(E3<=$A$2,B3>$A$2),1,0)
列 G には、列 F の値の累計が表示されます。
=SUM($F$3:F3)
範囲内の最初の参照は絶対参照で固定されていることに注意してください。この数式をコピーすると、合計する範囲が拡大し、列 G に表示される値になります。
最後に、列 B の値がセル A2 の条件より大きい場合、列 H に列 G の値が表示されます。
=IF(B3>$A$2,G3,"")
Office 365 の最新バージョンをお持ちの場合は、すべての手順を 1 つの数式に結合できます。これは、上の画像のセル I2 にのみ入力されます。
=LET(
base,$A$2,
data,$B$3:$B$12,
prev,OFFSET(data,-1,0),
numprev,IF(ISTEXT(prev),0,prev),
grpchg,BYROW(CHOOSE({1,2},data,numprev),LAMBDA(r,IF(AND(INDEX(r,,1)>base,INDEX(r,,2)<=base),1,0))),
runsum,SCAN(0,grpchg,LAMBDA(a,b,a+b)),
output,IF(data>base,runsum,""),
output)