答え1
列 A のセルの結合を解除して正規化するオプションがある場合は、簡単な方法でSUMIFS
うまくいくはずです。それ以外の場合は、次の方法を試してください。
=SUMPRODUCT($C$2:$C$13,
1*($B$2:$B$13=$A16),
1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15)),
1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1)))
結果:
╔════════╦════╦════╗
║ Day ║ 1 ║ 2 ║
╠════════╬════╬════╣
║ Apple ║ 60 ║ 90 ║
║ Orange ║ 0 ║ 85 ║
║ Pear ║ 75 ║ 0 ║
╚════════╩════╩════╝
ソース:
式を修正ここで見つかりました:
説明:
核となるのは機能でSMALL
ある
SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15)
指定された範囲の行番号の配列を作成します。何も含まれていないセル(=""
)には、対応する行番号( )より100大きい値が割り当てられます。一方、条件を満たさないセル(つまり、空白でないセル)には、行番号のみが割り当てられます。この配列は、2番目の引数として関数+100*
に渡され、SMALL
B$15
k番目配列内の最小の項目。
したがって、日付番号で始まる行を合計する必要があります。これがこの部分で行います。
1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15))
しかし、次の空白でないセルのすぐ上のセルまでの合計計算を制限したいので、演算子<
and B$15+1
(つまり、(k+1)番目次の部分に最小の項目を入力します。
1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1))