我正在开发包含财务报告数据的多维数据集。它有包含每月成本和收入数据的事实表,以及时间、分类帐、帐户、业务单位维度。我的目的是使用公式将 Cube 中的值检索到 Excel 中。我知道 Cubevalue 公式非常通用,您可以检索各种聚合级别的数据。但如果我要求特定的时间、账本、帐户和业务单位,我希望有一个简单的公式来从立方体中获取值。我写了下面的公式来做到这一点:
=CUBEVALUE("ServerAAA";"[Dim BU].[业务单位].&[公司1]";"[Dim Ledger].[Ledger].&[AC]";"[措施].[金额]" ;"[模糊帐户].[父帐户].&[P0168]";"[模糊日期].[CalHierarchy].[Mnd].&[2014]&[Jan]")
但这一点也不优雅......我想要类似这样的公式:
CUBEVALUE("ServerAAA";$B$2;$A$4;$A9;B$7;B8),然后避免在引用的单元格中输入 CubeMember 公式,只需输入 BusinessUnit 的 Company1、Ledger 的 AC、2014 和 Jan 等值来定义时间,账号P0168。
正在考虑通过VBA创建用户定义的函数,但也许有更简单的解决方案???
如果没有维度重叠,您可以使用 CUBEVALUE 公式的简短版本。因此,如果基础尺寸
CUBEVALUE("ServerAAA";$B$2;$A$4;$A9;B$7;B8)
、Company
、Business Unit
、Account
等是唯一的,您可以使用建议的 Account Parent
版本。我的意思是,所有可能出现的 Account
可能只出现在这个维度中。如果任何 Account
也可能出现在 Parent Account
中,那么您建议的 CUBEVALUE 公式的截断版本将不起作用,因为 Excel 不知道您指的是 Parent Account
还是 Account
本身。
我曾经遇到过同样的问题,并发现 - 只要所有维度彼此独立 - Excel 就可以知道您引用的是哪个维度,并自动按该维度进行过滤。
函数 CUBE_value(member_criteria 作为范围,Measure_name 作为字符串,可选 ByVal Conn 作为字符串 =“ThisWorkbookDataModel”)
将行变暗为整数 Dim member_expression、measure_expression、total_expression As String a = Chr(34)
行=member_criteria.rows.Count
对于 i = 1 到行 成员表达式 = 成员表达式 & a & "[" & member_criteria(i, 1) & "].&[" & member_criteria(i, 2) & "]" & a & ","
下一个我
measure_expression = a & "[Measures].[" & Measure_name & "]" & a
总表达式 = "CUBEVALUE(" & a & Conn & a & ",{" & 成员表达式 & 度量表达式 & "}" & ")"
CUBE_value = 评估(总表达式)
结束功能