使用Excel数据透视表作为另一个数据透视表的数据源。

24

我在Excel中有一个数据透视表,它使用原始表作为数据源。该数据透视表正在对行进行分组和求和。

现在我想将这个新数据透视表的结果用作另一个数据透视表的数据源,以进一步修改这些数据。

在Excel中是否可以实现此操作?我想你可以称其为“嵌套数据透视表”。

9个回答

22
  • 制作第一个数据透视表。

  • 选择左上角的第一个单元格。

  • 使用偏移量创建范围名称:

    OFFSET(Sheet1!$A$3,0,0,COUNTA(Sheet1!$A:$A)-1,COUNTA(Sheet1!$3:$3))

  • 使用 F3 将您的范围名称作为数据源制作第二个数据透视表。

如果您从第一个数据透视表更改行数或列数,则在刷新第二个数据透视表后,第二个数据透视表将得到更新。


使用偏移量和计数函数的方式非常巧妙。存档以备将来使用。 - DavidDraughn
我收到一个数据源无效的错误消息。我正在使用Excel 365。 - user 88 91
什么是 GFGDT? - Fennekin
非洲的全球基础地理空间数据主题是我能找到的全部内容,每个字母都有相当冗长的表述,如果不是措辞不当的话。GFGDT在星数学中的含义是什么?https://voticle.com/meaning-of/gfgdt/gfgdt-means-gfgdt-stands-for 但是,我离题了。 - HopWorks
我来晚了,但是OP的用户名是GFGDT。我想他们把它添加到答案的末尾作为一种签名。 - Nickolas Peter O'Malley
从答案末尾删除GFGDT。 - Heikki

18

在一个新的工作表中(您想创建新透视表的位置),按下键盘组合键(Alt+D+P)。在数据源选项列表中选择“Microsoft Excel 数据库列表”。点击下一步,选择要用作源的透视表(选择从字段实际标题开始)。假设此范围相当静态,如果刷新源透视表并更改其大小,则还必须重新调整范围的大小。希望能有所帮助。


嗨,当我点击下一页时,我在Excel文件中看不到所有的数据透视表。有什么办法可以让我查看所有的数据透视表吗? - Luca Monno
Windows快捷键Alt+D+P代表什么命令?我使用的是MacOS,因此没有Alt键。如果我知道它是什么命令,我就可以找到调用它的方法了。 - MCornejo

2
我猜你的最终目标是在原始数据透视表中显示唯一值。

例如,你可能有一个包含订单号、订单日期、订单项和订单数量的数据集。

第一个透视表将显示订单日期和订单数量的总和,你可能希望在同一个透视表中看到唯一订单的计数。标准透视表无法实现此功能。

如果你想要这样做,你需要使用 Office 2016(或者可能是 Power Pivot)。在 Office 2016 中,选择你的数据 > 插入 > 透视表 > 选择“将此数据添加到数据模型”

之后,你就可以选择唯一分组方法(计数)了。


这应该是正确的答案(假设最终目标是不同计数)。 - eh1160

1
如建议所述,您可以更改数据透视表的内容并将其粘贴为值。 但是,如果您想动态更改值,我发现最简单的方法是 转到 插入->创建数据透视表 现在在对话框中的输入数据字段中选择先前数据透视表的单元格。

0

在进行操作之前,您必须先将数据透视表转换为值:

  • 删除小计
  • 重复行项目
  • 复制/粘贴数值
  • 插入新的数据透视表

0

正如@nutsch所暗示的那样,Excel不能直接完成您需要的操作,因此您首先必须将数据从数据透视表复制到其他地方。然而,与其使用复制和粘贴值,对于许多目的来说,更好的方法是创建一些隐藏列或整个隐藏工作表,使用简单的公式复制值。当原始数据透视表被刷新时,复制粘贴方法并不是非常有用。

例如,如果Sheet1包含原始数据透视表,则:

  • 创建Sheet2,并将=Sheet1!A1放入Sheet2!A1中
  • 将该公式在Sheet2中复制到与原始数据透视表大小相匹配的所有单元格。
  • 假设原始数据透视表可能随着刷新而改变大小,则可以将Sheet2中的公式复制以覆盖原始数据透视表可能占据的整个潜在区域。这将在当前单元格为空的单元格中放置许多零,但您可以使用公式=IF(Sheet1!A1="","",Sheet1!A1)来避免这种情况。
  • 基于Sheet2中的范围创建新的数据透视表,然后隐藏Sheet2。

0

就我个人而言,我以稍微不同的方式解决了这个问题 - 我有一个透视表查询 SQL 服务器源,并使用时间轴切片器将结果限制在日期范围内 - 然后我想在另一个表中总结透视结果。

我选择了“源”透视表并创建了一个名为“SourcePivotData”的命名区域。

使用命名区域作为源创建您的摘要透视表。

在源透视表的工作表事件中,我放置了以下代码:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

'Update the address of the named range
ThisWorkbook.Names("SourcePivotData").RefersTo = "='" & Target.TableRange1.Worksheet.Name & "'!" & Target.TableRange1.AddressLocal

'Refresh any pivot tables that use this as a source
Dim pt As PivotTable
Application.DisplayAlerts = False
For Each pt In Sheet2.PivotTables
    pt.PivotCache.Refresh
Next pt
Application.DisplayAlerts = True

End Sub

对我来说很好用!:)


0

这是我以前的做法。

  1. 在源数据透视表的右侧添加一个虚拟列“X”。
  2. 单击该单元格并开始创建您的透视表。
  3. 一旦对话框弹出,您可以编辑数据范围以包括您的透视表。
  4. 这可能需要您先刷新源表,然后再刷新您的辅助透视表...或者两次全部刷新。

-1

我喜欢偏移选项 - 我必须首先创建一个名为“offset”的范围,并执行-3而不是-1。然后将该新范围用于我的新数据透视表。现在,当第一个透视表更改时,第二个透视表将拾取新的行(或较少的行)...


1
作为一个没有足够声望来评论的新用户,很容易把评论当做答案添加。然而,在该网站上这并不被鼓励,这种评论式答案可能会招致负评。我建议你克制自己,等到你有足够的声望来评论。或者你可以将其编辑成完整的答案,明确指出这个偏移量是如何定义的以及为什么它解决了问题。 - Christopher Hamkins
1
这并不是对问题的回答。一旦您拥有足够的声望,您便可以评论任何帖子;相反,提供不需要问者澄清的答案。- 来自审核 - Spinner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接