如何使用类别创建动态数据透视表?


1

我在Excel中有此数据,并希望找到每个类别的总和,并且我希望总和在添加更多值时自动更改。关于如何做到这一点的任何想法? 在此处输入图片说明


您在此处有两个选择:1.使用数据透视表,它易于设置,但不会自动计算,您需要在更改值后手动刷新它(或为此使用宏)2.使用公式( SUMIF),它会自动计算,但是,如果你有类别(项目不变的列表)仅适用
队友Juhász

Answers:


3

无论使用哪种方法求和,都将要使用动态命名范围或(在Excel 2007或更高版本中)数据表。当您输入新值时,任一种都会扩展您的数据范围。

数据表

对于数据表,您只需在数据范围内选择一个单元格,然后转到“主页”选项卡| 格式化为表格并选择任何可用格式。

插入数据表

Excel将尝试自动确定您的数据范围-假设您的数据按照示例所示进行布局,并且顶部没有空行,列和标题,则它应该能够自动获取范围。如果没有,您可以在这里选择它。

定义数据范围

单击确定,您的数据表将被创建。

数据表为您提供了许多漂亮的功能:

  • 就我们的目的而言,最好的方法是创建一个命名范围,默认情况下称为Table1,如果在其正下方或其旁边的列中添加了新数据,该范围将自动扩展。

  • 出于我们的目的,第二好的是您可以在公式中使用该命名范围。在您的示例中,假设标题“ Gas”和“ Grocery”位于D列中,我们可以将以下公式添加到E列中:=SUMIF(Table1[Item],D4,Table1[Value])该公式将查看数据表Table1,并查看与该Item列匹配的所有值。的价值D4。然后它将对Value列中的各个值求和。

您还可以将Table1用作数据透视表的源,但是当将新数据添加到数据表时,它不会自动更新。您需要转到“数据透视”,右键单击它,然后选择“刷新”。

动态命名范围

为了清楚起见,我建议使用“数据表”选项。它更干净,更容易,而且发生严重错误的空间更小!但是,如果您愿意,我们可以查看动态命名范围。在较早版本的Excel中,这是必需的,并且在某些情况下,您可能更喜欢它。

实际上,我们将创建两个命名范围,每个命名范围都使用非常相似的公式。在Excel 2007和更高版本中,转到“公式”选项卡,然后选择“名称管理器”:

名称管理员

在“名称管理器”窗口中,单击“新建”以转到“新名称”框。这里我们将需要两个基本项目-名称和“引用至”公式。名称不能有空格。在我们的情况下,我们可能要使用Item:

新名字

在“引用到”框中,我们将放置一个公式。请注意,在键入此内容时,除非您先按F2键,否则箭头键实际上将开始选择电子表格上的单元格。输入以下内容:=OFFSET(Sheet1!$A$2,0,0,COUNTA(SHEET1!$A:$A)-1,1)

OFFSET函数用于返回一定范围的单元格,从参考单元格开始-在这种情况下Sheet1!A2-然后向下移动一定数量的行,然后向下移动一定数量的列。我们正在0,0为此。然后,它返回一定高度和一定宽度的范围。我们使用COUNTA(A:A)来计算A列中有多少个单元格具有任何类型的值来获取该高度,然后减去1以说明我们的数据从第2行开始的事实,并返回1列宽的范围。

创建第二个命名范围,与第一个命名范围相同,但是名称为“ Value”,并且公式引用B列: =OFFSET(Sheet1!$B$2,0,0,COUNTA(SHEET1!$B:$B)-1,1)

现在,我们可以将这些命名范围用作与“ 数据表”方法中使用的公式相似的公式的来源:=SUMIF(Item,D4,Value)

您还可以使用动态命名范围将数据馈入数据透视表,但在这种情况下,您需要将更,1)改为,1),以返回整个数据集。

只需使用整个列

所有这些方法都相当复杂,但它们避免尝试使用过多的资源来实现目标。如果您对此不担心,则可以始终使用简单的选项:在公式中引用整列。

在总计单元格中添加一个这样的公式:=SUMIF($A:$A,D4,$B:$B)它包括A和B列中的所有行。它将起作用,但与其他选项相比,它的泛滥更少。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.