Excel でグループ内の値の出現頻度をカウントする

Excel でグループ内の値の出現頻度をカウントする

値のリストがあり、値が 400 を超える回数をカウントしたいのですが、次の行の値もこの基準に一致する場合はカウントされません。この場合、COUNTIF 式は役に立たないと思います。理解を深めるために、添付の画像を参照してください。

ここに画像の説明を入力してください

答え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)

関連情報