【问题标题】:How to reference a range of cells containing monthnameshort in GETPIVOTDATA如何在GETPIVOTDATA中引用包含monthnameshort的单元格范围
【发布时间】:2021-10-27 11:55:03
【问题描述】:

我正在尝试构建一个更灵活且时间有限的财务报告工具。 在这个过程中,我偶然发现了一个我似乎无法解决的问题。

我试图通过引用包含 Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep 的一系列单元格来获取年初至今的数字

仅适用于 1 月的公式:

=GETPIVOTDATA("[Measures].[Amount]";'Regnskab pr. mdr.'!$A$10;"[Dim GL Account Hierachy].[Parent GL Account]";"[Dim GL Account Hierachy].[Parent GL Account].&[1495 Nettoomsætning i alt]";"[Dim Posting Date].[MonthNameShort]";"[Dim Posting Date].[MonthNameShort].&[Jan]")强>

在这里我想引用一系列包含我想要的月份的单元格(从一月到九月) 我不能这么简单:

=GETPIVOTDATA("[Measures].[Amount]";'Regnskab pr. mdr.'!$A$10;"[Dim GL Account Hierachy].[Parent GL Account]";"[Dim GL Account Hierachy] .[Parent GL Account].&[1495 Nettoomsætning i alt]";"[Dim Posting Date].[MonthNameShort]";"[Dim Posting Date].[MonthNameShort].&[Jan]:[Sep] ")

有人知道怎么做吗?

(我可能会补充一点,我试图引用的数据透视表在报告旁边的工作表中可见,并且还用作不同帐户的规格表以供管理层查看)。

非常感谢

【问题讨论】:

  • 发帖和幽灵...?

标签: excel-formula pivot-table date-range


【解决方案1】:

TMK - 我不知道你可以在 GETPIVOTDATA 中创建一个范围。您可以通过以下方式之一来解决此问题。

首先,我通过基于您显示的两个暗淡表以及称为 Amount 的 DAX 度量构建数据模型来模拟您的表。我在工作表的 B3 处放置了一个 PowerPivot 表,因此下面使用的所有单元格引用都基于此。

将您的数据透视表视为一个范围 您可以创建一个公式来引用来自枢轴的单元格范围,而不是进入枢轴内部。根据上面显示的 piv 表,应该是这样的:

=SUM( (MONTH(DATEVALUE(C4:N4&"-0"))<=9) * (B5:B9="1495 Nettoomsætning i alt") * C5:N9 )

我猜你的布局;所以你需要相应地修正公式。

(MONTH(DATEVALUE(C4:N4&amp;"-0"))&lt;=9) 将 MonthNameShort 标头转换为日期值,方法是将年份“2000”附加到它们的后面,然后提取一个月份编号。然后它检查它是否是 1 到 9。下一部分查看父 GL 帐户是否 = 您的目标帐户。然后将此布尔矩阵乘以您的 Amount 矩阵。

您可以从单元格 L12 中的 SUM 公式中看到它计算正确。

使用 DAX 您可以创建一个过滤到您的目标日期的度量。这可能不是您想要的,但它可能没问题并且值得注意。也许:

filtAmount := CALCULATE( [Amount], 'Dim Posting Date'[MonthNum] <= 9 )

您可以从您的 GETPIVOTDATA 中获取它。

在 DAX 中使用 CUBE 函数 由于您已经在使用 PowerPivot 数据模型和数据透视表,因此您可以探索 CUBE 函数。 Here 是一篇非常好的入门文章。

这种方法依赖于具有数字数据的切片器,因此您需要在 Dim Posting Date 表中使用诸如 MonthNum 之类的字段,然后您需要使用作为切片机。这可能不是您所追求的,因为当然,您可以使用 GETPIVOTDATA 执行此操作并简单地使用:

=GETPIVOTDATA("[Measures].[Amount]";$A$10;
              "[Dim GL Hierarchy].[Parent GL Account]";"[Dim GL Hierarchy].[Parent GL Account].&[1495 Nettoomsætning i alt]")

但是您可以应用切片器,这样它就不会影响您的表格,但会影响您的 CUBE 公式。这可以通过 CUBE 函数实现,因为它们使用称为 "ThisWorkbookDataModel" 的通用数据模型。这比 GETPIVOTDATA 有优势。

=CUBEVALUE( "ThisWorkbookDataModel";
            CUBEMEMBER("ThisWorkbookDataModel";"[Measures].[Amount]"),
            CUBEMEMBER("ThisWorkbookDataModel";"[Dim GL Hierarchy].[Parent GL Account].&[1495 Nettoomsætning i alt]");
            CUBEMEMBER("ThisWorkbookDataModel";"[Dim Posting Date].[MonthNameShort].[All]","Grand Total");
            Slicer_MonthNum )

这个 CUBE 公式基于我应用于 另一个 数据透视表的真实切片器。然后我删除了那个数据透视表,但没有删除切片器。因此,此 Slicer 应用于已删除的数据透视表,而不是目标数据透视表。如您在此处看到的,切片器不会影响目标 piv 表:

而且,如果您愿意,可以将切片器隐藏在工作簿中的某个位置,如果您不希望人们更改它。

您可以将切片器合成为 DAX 度量。我试过了,但无法让它工作。一个有用的视频是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多