如何从 Excel 中的枢轴 table 动态获取最后一个值

How to get dynamically the last value from a pivot table in Excel

我有一个枢轴 table 就像图中的那个:

table每月更新一次。 问题是:如何在没有 VBA 的情况下使用函数动态获取 table 的最后一个值? 例如,在这种情况下,最后一个值为 -32,刚好高于“总计”值。 我正在考虑使用函数“GETPIVOTDATA”,但我不知道如何将动态引用更改为最后插入的值。目前,公式如下所示:

=GETPIVOTDATA("[Measures].[Count of DESIGNER]";$A;
"[Components_Drawings_Data].[DATE (Month)]";
"[Components_Drawings_Data].[DATE (Month)].&[giu]")

我详细阐述了这个技巧。 假设枢轴 table 的“月”列对应于 A 列,“增量”列对应于 B 列。 我会使用这个公式:

=INDEX(B:B;MATCH("Grand Total";A:A;0)-1)

它可以工作。

截图(下)/here参考

假设:

  • 您可以隔离枢轴 table 这样就没有填充的单元格 在它下面(合理的前提,因为它是 'dynamic' 并且如此可变 回复:# 行)
  • 您没有在公式中使用数据透视表引用
  • 您没有预料到任何行标签 = 'Grand Total'(至少可以说这是不寻常的,但是请参阅下面的替代函数)
  • 正在显示列的总计

那么下面将实现你所指出的:

...how can I dynamically get the last value of the table with a function, without VBA?

=OFFSET(INDEX($F:$F0,MATCH("grand total", LOWER($F:$F1),0)),0,1,1,1)

注意:上面屏幕截图中单元格 L3 中的公式包含一个仅用于演示/易于使用的包装器 - 即 'Item'(J 列)指的是来自 Grand 的单元格数量 'up'总计在枢轴的最底部 table... 例如对于 item = 1(上一级),返回 119(对应 'woman');对于 item = 2(向上两层,77 个显示器等等。

可以用非常相似的方式确定相应的标签:

INDEX($F:$F0,MATCH("grand total", LOWER($F:$F1),0)-J3+1)

Alternative/direct(不依赖于 cols 的总计):

=OFFSET(F3,COUNTA(F3:F100)-2,1,1,1)