如何从 Excel 中的数据透视表中删除旧的行和列项?
数据透视表是excel中最有效的数据分析工具之一。如果您经常使用数据透视表,那么您会发现即使从数据源中删除旧数据后,它仍保留在数据透视表的过滤器下拉列表中。我们将学习如何从 Excel 中的数据透视表中删除旧的行和列项。
不删除旧数据的原因
为了更好地理解,为什么数据没有从数据透视表中删除,即使从源数据中删除,您需要了解数据透视表的架构。在内部,数据透视表有一个数据透视缓存,其中保存了源数据的副本。这样做是为了加快从源到数据透视表的数据检索过程。
每当您刷新数据透视表时,它都会从数据透视缓存而不是源数据中更新。因此,数据透视缓存具有其属性和默认行为。数据透视缓存的默认行为之一是它不会从过滤器下拉列表中删除旧的行或列。这是一个默认设置,可以很容易地更改。
从数据透视表中删除旧行和列
给出一个表学生和他们的分数。数据透视表也由给定的表制成。它代表学生及其获得的总分。
第 1 步:从给定表中删除第六行,即学生姓名Shubham 。
第 2 步:名为Shubham的学生已从表中删除,剩余的总行数为 8。您还可以看到,Shubham 并未从数据透视表中删除。这指定数据透视表不会立即更新。
第 3 步:要更新数据透视表,请在数据透视表的任何单元格内单击鼠标右键。例如,在单元格C6内单击鼠标右键,单元格值为Arushi 。出现一个下拉菜单。单击刷新按钮。
第 4 步:名为Shubham的学生从数据透视表中移除。因此,表被更新。现在,我们解决了一个问题。
第 5 步:单击单元格G5的数据透视表中的过滤器按钮。出现一个下拉菜单。可以看到,即使刷新了数据透视表,名为 Shubham 的学生仍然出现在下拉筛选菜单中。这是不正确的。
第 6 步:要解决此问题,请在数据透视表的任何单元格内单击鼠标右键。例如,在单元格C6内单击鼠标右键,单元格值为Arushi 。单击数据透视表选项。
第 7 步:出现数据透视表选项对话框。
第 8 步:转到“数据”选项卡。在保留从数据源中删除的项目部分下,转到每个字段要保留的项目数。
第 9 步:单击下拉菜单并选择None 。单击确定。
第 10 步:在数据透视表的任何单元格内单击鼠标右键。例如,在单元格C6内单击鼠标右键,单元格值为Arushi 。出现一个下拉菜单。单击刷新按钮。
第 11 步:单击单元格G5的数据透视表中的过滤器按钮。出现一个下拉菜单。名为Shubham的学生将从过滤器下拉列表中删除。因此,问题得到解决。
使用 VBA 宏删除数据透视表中的旧行和列
你可以用 VBA 宏做同样的事情。在 VBA 代码编辑器中编写以下代码并运行它。它将每个字段保留的项目数从自动更改为无。在下面的示例中,有两个 for 循环。外部循环说明了遍历整个工作簿中所有工作表的条件。内部循环状态遍历工作表中的所有数据透视表。语句pivottables.PivotCache.MissingItemsLimit = xlMissingItemsNone将Number of items to retain per field从Automatic更改为None 。
运行上面写的代码。考虑相同的数据集,如第一种方法所示。检查每个字段要保留的项目数是否设置为无。以下是步骤:
第 1 步:在数据透视表的任意单元格内单击鼠标右键。例如,在单元格C6内单击鼠标右键,单元格值为Arushi 。出现一个下拉菜单。单击刷新按钮。
第 2 步:出现数据透视表选项对话框。转到数据选项卡。在保留从数据源中删除的项目部分下,转到每个字段要保留的项目数。我们可以看到它设置为None 。