【问题标题】:Dynamic GETPIVOTDATA formula to SUM with different date ranges per column动态 GETPIVOTDATA 公式求和,每列具有不同的日期范围
【发布时间】:2021-05-28 09:30:22
【问题描述】:

下面有一个示例数据透视表,其中国家作为我的列,日期作为我的行。此数据透视表的数据基于 A1:C13。单元格 F1:G3 是该模型的用户可以调整的。他们可以更改国家和/或日期范围。

我需要的是一个公式来输出他们的选择总数。由于我的实际数据集包含许多国家/地区,因此仅编写嵌套的 IF 语句是不够的。数据集还需要位于数据透视表中 - 因此需要 GETPIVOTDATA。

我在这里使用这个公式已经完成了大约一半:

=SUM(GETPIVOTDATA("Sum of Value",$A$15,"Date",ROW(INDIRECT(F2&":"&F3)),"Country",F1:G1))

这里的问题是这个公式对于每个国家/地区的不同日期选择不是动态的。

有人可以帮忙吗?

【问题讨论】:

  • 嗨,克里斯,请问您为什么不能从原始数据表 (A1:C13) 进行计算,而是选择在数据透视表上进行计算?例如,通过对原始数据表进行计算,两个简单的 SUMIFS 公式可以轻松计算出您所寻求的总数。另外,您是否考虑过使用电源查询来生成所需的输出? power query 的不足之处在于,每次参数改变时,用户都需要手动刷新数据(除非你使用 VBA 做自动刷新但 marco 工作簿不能方便地在实体内共享)。

标签: excel excel-formula


【解决方案1】:

@basic 提供的答案与原始问题最接近,即使用 GETPIVOTDATA 计算每个给定参数的总数。

如果可以在原始数据表(范围A1:C13)上进行计算,那么这里有另一种计算总数的解决方案。

=SUMPRODUCT((A2:A13=F1:G1)*(B2:B13>=F2:G2)*(B2:B13<=F3:G3)*(C2:C13))

为了使上述计算“动态”,即计算随着表中行的扩展而更新,可以将源数据放入一个结构化参考表,给出一个为每一列命名,例如A列为“List_Ctry”,B列为“List_Date”,C列为“List_Value”,则每个名称后面的范围将在源数据更改时自动更新。使用这些名称,公式将类似于:

=SUMPRODUCT((List_Ctry=F1:G1)*(List_Date>=F2:G2)*(List_Date<=F3:G3)*List_Value)

您还可以为三个参数命名,即国家范围、开始日期范围和结束日期范围。上面的概念我就不多做说明了,这一步应该可以自己做。

通过在excel工作簿中使用Name,可以方便你参考源数据,而不需要在最终报告中进行布局,所以我不明白有什么限制在这里阻止您从源数据进行计算,但必须在数据透视表上工作,因为数据透视表上的计算有限且不那么直观。

如果您有任何问题,请随时告诉我:)

【讨论】:

  • 谢谢@Terry W。你提出了一个很好的观点。有时很难通过树木看到森林......我想我被困在了 GETPIVOT() 函数上,想知道它有什么可能。将重新调整我的方法,并按照您的建议,使用 SUMPRODUCT() 回到我的原始数据源。
  • @Chris 很乐意提供帮助 :) 在我看来,Excel 是一个开放的世界或沙盒。充满乐趣:)
【解决方案2】:

您需要为每个国家/地区提供单独的GETPIVOTDATA

=SUM(GETPIVOTDATA("Sum of Value",$A$15,"Date",ROW(INDIRECT(F2&":"&F3)),"Country",F1),GETPIVOTDATA("Sum of Value",$A$15,"Date",ROW(INDIRECT(G2&":"&G3)),"Country",G1))

【讨论】:

  • 感谢您的回复。但是有没有办法做到这一点而不把它分开?我的实际数据中有 20 个国家。尽量不写一个“怪物”公式:)
  • 这让我更接近一点,但理想情况下,我会将所有日期组件组合在一起,而不是每个输入的单独行/间接。 =SUMPRODUCT(IFERROR(GETPIVOTDATA("Sum of Value",$A$15,"Date", CHOOSE({1,2},ROW(INDIRECT(F2&amp;":"&amp;F3)),ROW(INDIRECT(G28&amp;":"&amp;G3))),"Country",F1:G1),0))
猜你喜欢
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
相关资源
最近更新 更多