如何在 Excel 2010 中获取行标签及其总和值的去重列表

如何在 Excel 2010 中获取行标签及其总和值的去重列表

我有一张包含多行的 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

你能做的最好的事情就是对它进行透视,一旦你添加了新数据,只需刷新表格即可。如果你真的不喜欢透视,你可以使用求和或者积和。在创建公式之前,请为列设置名称范围。当您在另一张表中创建公式时,这会更容易。

=sumif(ColumnA, "labelA", ColumnB)

ColumnA 和 ColumnB 将成为您的范围的名称。这只是一个示例

=sumproduct((ColumnA="labelA")*(ColumnB))

至于新标签,您可以在第二张表中手动添加它们。除非您制作宏,否则我不知道如何自动添加它们。希望这有帮助。:)

答案3

你可以从sumif函数。要总计 的所有内容labelA,请使用此函数:

=sumif(Sheet1!A1:A9999, "labelA", Sheet1!B2:B9999)

您需要为每个新标签手动添加一个函数。我不确定如何自动为新标签添加总计。

相关内容