Mic*_*ael 5 microsoft-excel-2007 microsoft-excel
我已经在 StackOverflow 上问过这个问题,但意识到这里可能更合适。
是否可以将单个单元格中的多个字段和项目引用到 GETPIVOTDATA 公式中?
我有一个仪表板,它根据多个用户控件显示数据透视表中的数据。根据选择的内容,我可能需要使用一个或多个字段和项目来引用正确的数据。我能够在单元格中构建所需字段和项目的字符串,但似乎无法将其插入到 GETPIVOTDATA 公式中。它似乎将单元格视为引号内的单个项目。有没有办法解决?
Example code:
=GetPivotData("Time", PTSchedule, $A$1)
Cell $A$1 contains "ID", $A$5, "Team", "Team 1"
Run Code Online (Sandbox Code Playgroud)
理想情况下,这将评估为
=GetPivotData("Time", PTSchedule, "ID", $A$5, "Team", "Team 1")
Run Code Online (Sandbox Code Playgroud)
然而,它似乎评估为
=GetPivotData("Time", PTSchedule, ""ID", $A$5, "Team", "Team 1"")
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在处理的数据有几个层次结构:经理 > 团队 > 代理 根据用户的选择,我想在这些级别中的任何一个级别上拉回数据。这意味着 GETPIVOTDATA 语句可能需要 1 到 3 个字段/项目配对来识别正确的信息。
我想我可以使用三个 GETPIVOTDATA 并用 CHOOSE 函数包装它们:
=CHOOSE(Selection, GETPIVOTDATA("Sales", PTSALES, "Manager", Manager),
GETPIVOTDATA("Sales", PTSALES, "Manager", Manager, "Team", Team),
GETPIVOTDATA("Sales", PTSALES, "Manager", Manager, "Team", Team, "Agent", Agent))
Run Code Online (Sandbox Code Playgroud)
但是,我希望有一个更简洁的解决方案,将所有“变量”值移动到一个更容易维护的位置,而不是分布在我从数据透视表中提取数据的每个单元格中。
不。
但既然你有“许多用户控件”,为什么不直接从它们的输出中构造你的 GETPIVOTDATA 例如:
=GETPIVOTDATA("Time", PTSchedule, "ID", $A$5, "Team", $B$7)
Run Code Online (Sandbox Code Playgroud)
因此,对于每个控件,将输出放入其自己的单元格中(当然会进行一些错误检查)并在公式中使用它们。
(旁白:为了稳健性,我总是使用单元格来获取字段标签,而不是对其进行硬编码,例如引用原始列标题。这样,如果有人将“Team”重命名为“Group”或将“ID”重命名为“SSN” “在原始源表中,因此在 PT 中,您的公式不会被破坏。)
不幸的是,这并没有提供一种简单的方法来忽略空项,例如未指定 IDis 的情况,但当然您可以将整个内容包装到 IF 语句中来检查这一点:
=IF($A$5="",GETPIVOTDATA("Time", PTSchedule, "Team", $B$7),GETPIVOTDATA("Time", PTSchedule, "ID", $A$5, "Team", $B$7))
Run Code Online (Sandbox Code Playgroud)
仅当您的 PT 层次结构为团队 > Id,并且团队具有可见的小计时,此功能才有效(GetPivotData 将仅返回已计算并显示在 PT 中的值)。
或者简单地告诉用户,如果他们没有填写所有内容,就会出现问题:
=IFERROR(GETPIVOTDATA("Time", PTSchedule, "ID", $A$5, "Team", $B$7),"Please choose all parameters")
Run Code Online (Sandbox Code Playgroud)