使用 CUBEVALUE 公式的优雅方法

问题描述 投票:0回答:2

我正在开发包含财务报告数据的多维数据集。它有包含每月成本和收入数据的事实表,以及时间、分类帐、帐户、业务单位维度。我的目的是使用公式将 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创建用户定义的函数,但也许有更简单的解决方案???

vba excel ssas cube
2个回答
0
投票

如果没有维度重叠,您可以使用 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 就可以知道您引用的是哪个维度,并自动按该维度进行过滤。


0
投票

函数 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 = 评估(总表达式)

结束功能

© www.soinside.com 2019 - 2024. All rights reserved.