我的 Excel 数据如下
10
15
12
3
2
5
3
我希望它返回如下小计
10
15
12
37
3
2
5
5
3
8
有没有办法在 Excel 中实现这一点?
答案1
一个可能有一定用处并且可能更加通用的替代方法(也可以避免在没有手边/容易重新创建的情况下出现“怪物”)是将更多熟悉的操作串联在一起。
假设:ColumnA
是‘备用’;值在ColumnB
;Row1
包含标签,并且C1
其中包含某些内容(例如‘总和’)。
需要识别值“块”,因此过滤A:C
,取消勾选(Blanks)
,B
输入“v”A2
并复制到最后一个蓝色行号。
选择A1:C{last blue row number}
,删除过滤器(如果需要分组),在每个更改处用“(A 列)”进行小计,使用函数:“Sum”,将小计添加到:勾选“Sum” OK
,。
删除空白行(例如通过过滤ColumnA
),然后删除ColumnA
。
选择ColumnB
,查找内容:',B',替换为:',A',单击Replace All
。
总计为奖金。
答案2
我想出了这个怪物,但它工作得很好,你可以直接把它复制下来:
=IF(ISBLANK(A4),SUBTOTAL(9,OFFSET(B4,IFERROR(MATCH(0,$B$1:B3,-1),1)-ROW(),-1,ROW()-IFERROR(MATCH(0,$B$1:B3,-1),1),1)),"")
这是我的原文(德语):
=WENN(ISTLEER(A4);TEILERGEBNIS(9;BEREICH.VERSCHIEBEN(B4;WENNFEHLER(VERGLEICH(0;$B$1:B3;-1);1)-ZEILE();-1;ZEILE()-WENNFEHLER(VERGLEICH(0;$B$1:B3;-1);1);1));"")
因此,当 A 列中的单元格为空时,进行求和,将上述值相加,直到最后一次求和或为 1。
如果论坛不清楚,请随时询问具体信息。
编辑
用伪代码/解释代码来说:
IF(ISBLANK(A4),SUBTOTAL(),"")
如果A列当前行的单元格为空,则计算小计,否则不显示任何内容。
SUBTOTAL(9,RANGE)
使用 sum 函数 (9) 根据给定的范围创建小计
RANGE = OFFSET(B4,ROWS,COLS,HEIGHT,WIDTH)
小计的范围是通过基于单元格 B4 偏移/跨越范围来创建的。
在这个 B4 具体例子中,这就像写作:
OFFSET(B4,-3,-1,3,1)
因此,创建一个范围,该范围位于 B4 上方 3 行(-3)处,左侧 1 列(-1),并且向下/高 3 行,宽 1 列。
为了计算 -3 和 3(它们将根据 A 列中两个空单元格之间的行而不同),我们使用以下命令:
IFERROR(MATCH(0,$B$1:B3,-1),1)-ROW()
ROW()-IFERROR(MATCH(0,$B$1:B3,-1)
除符号外,基本都相同。
MATCH(0,$B$1:B3,-1)
在 b 列中搜索大于 0 的任何内容(-1 表示更大),从第一个单元格到当前单元格的前一个单元格($B$1:B3)。
因为这会导致第一个小计出现错误,所以IFERROR
提供 1 来纠正这个问题。
因此,当您在 B4 中时,您将搜索 B4 上方是否有任何值,假设这是一个小计,如果找不到任何值,则使用 1 作为行。1-4 = -3;4-1=3 就这样。
答案3
您可以尝试另一种更短的公式:
可以通过增加“$A$1000”来增加要计算的最大行数,使用 A2 作为第一行:
=IF(A2="",SUM($A$1:$A$1000)-SUM(A3:$A$1000)-SUM($B$1:N2),"")