我有一张包含多行的 Excel 表,格式如下:
Column A|Column B
label | value
--------|--------
header (merged cells)
labelA |12
labelB |5
labelC |9
header (merged cells)
labelA |13
labelD |8
它基本上是一个标签和值列表,分为多个不同的部分。实际上有 70-80 个标签,所有标签都使用了 5-10 次。我需要在单独的工作表上以以下格式创建输出:
Column A|Column B
label | Total sum
--------|----------
labelA |25
labelB |5
labelC |9
labelD |8
理想情况下,第一张表可以动态更新,新标签会立即反映在第二张表中。
我确信我可以创建一个宏来实现这一点,但是如果没有必要,我不想添加宏。数据目前不在数据透视表中。有没有办法在没有这些解决方案的情况下实现这一点?
答案1
使用公式可以轻松计算不同标签的总和SUMIF
。假设您的标签位于输出表的 A 列,第一个标签位于第 2 行,则公式如下B2
:
=SUMIF(SourceSheet!$A:$A,$A1,SourceSheet!$B:$B)
– 根据需要进行扩展。自动获取所有标签略显棘手,因为您需要删除重复标签。以下数组公式将对源工作表第 1 行至第 100 行的标签执行此操作(根据需要调整范围,SourceSheet
用正确的工作表名称替换):
=IFERROR(
INDEX(SourceSheet!$A1:$A100,
SMALL(
IFERROR(
IF(
MATCH(SourceSheet!$A1:$A100,SourceSheet!$A1:$A100,0)<ROW(),
"",
MATCH(SourceSheet!$A1:$A100,SourceSheet!$A1:$A100,0)
),
""),
ROW())
),
"")
注意这在 Excel 中属于一行(我在这里缩进了公式,以使其更易读)为了使其正常工作,您需要将其保存为数组公式(选择您想要结果的整个范围,在公式栏中输入公式 - 而不是在单元格中!- 然后使用它保存Ctrl+Shift+Enter)。
如果公式输入正确,则从如下值开始:
将返回以下结果:
如您所见,这也会返回源工作表标题行。它们可能被过滤掉,但由于没有关于其确切内容的详细信息,我无法告诉您如何过滤。
答案2
答案3
你可以从sumif
函数。要总计 的所有内容labelA
,请使用此函数:
=sumif(Sheet1!A1:A9999, "labelA", Sheet1!B2:B9999)
您需要为每个新标签手动添加一个函数。我不确定如何自动为新标签添加总计。