优雅的方式使用CUBEVALUE公式

时间:2015-05-19 16:40:01

标签: excel vba excel-vba ssas cube

我正在处理包含财务报告数据的多维数据集。它有每月成本和收入数据的事实表,以及时间,分类帐,帐户,BusinessUnit维度。我的目的是使用公式从Cube中检索值到Excel。我知道Cubevalue公式非常通用,您可以检索各种聚合级别的数据。但是,如果我要求特定的时间,分类帐,帐户和BusinessUnit,我希望有一个简单的公式来从多维数据集中获取值。我写了以下公式:

= CUBEVALUE(" ServerAAA&#34 ;;" [Dim BU]。[业务单位]。& [Company1]";" [Dim Ledger]。[Ledger ]。& [AC]";" [措施]。[金额]";" [昏暗帐户]。[帐户家长]。& [P0168]&#34 ;" [Dim Date]。[CalHierarchy]。[Mnd]。& [2014]& [Jan]")

但这绝不是优雅......我希望有这样的公式:

CUBEVALUE(" ServerAAA&#34 ;; $ B $ 2; $ A $ 4; $ A $; B $ 7; B8)然后避免将CubeMember公式输入到引用的单元格中,只需为BusinessUnit输入类似于Company1的值,AC为Ledger,2014年和1月定义时间,P0168为帐户。

考虑通过VBA创建用户定义的功能,但也许有更简单的解决方案???

1 个答案:

答案 0 :(得分:0)

如果没有任何尺寸重叠,您可以使用CUBEVALUE公式的简短版本。因此,如果基础维度df = sql.read_frame(sqlr, conn) # You can directly read a table as dataframe CUBEVALUE("ServerAAA";$B$2;$A$4;$A9;B$7;B8)CompanyBusiness Unit等是唯一的,则可以使用建议的Account版本。我的意思是Account Parent的所有可能的出现都可能只出现在这个维度上。如果任何Account也可能出现在Account中,那么您建议的CUBEVALUE公式的截断版本将无效,因为Excel不知道您是指Parent Account还是Parent Account本身。

我曾经遇到过同样的问题并发现 - 只要所有维度彼此独立 - Excel就可以告诉您所指的维度,并自动按此维度进行过滤。