Excel中CUBE函数与数据模型的激情碰撞之一:初识
CUBE类函数非常强大,可以帮助我们充分利用数据模型超强的汇总分析能力。
之前介绍过CUBE类函数。这次重新整理,并且将CUBE类函数与动态数组和LAMBDA等新函数结合,从而发挥出更加强大的数据处理能力。算是一个升级系列吧。
从一个应用技巧说起这是一个不太常用但是非常好使的技巧。我们知道,透视表很方便,计算速度非常快。比大部分Excel函数都快。但是,透视表与最终报告之间很可能在格式和布局上不兼容。简单的说,我们需要在报告中引用一个汇总数据,而这个数据我们又必须(或者说最好的做法是)使用透视表计算。这时,我们先创建一个透视表,完成计算。然后使用GETPIVOTDATA函数从透视表中取值。

然后,使用GETPIVOTDATA公式:=GETPIVOTDATA(
"销售额", $A$3,
"Year", 2011,
"月", 4,
"大类", "Deluxe“)这个公式帮助我们从透视表中取出2011年4月产品大类为Deluxe的销售额。具体用法见这里。这是一个非常有用的技巧,我们用它做过很多非常专业的报告。但是,存在两个缺点:首先,要使用这个函数,必须存在透视表。其次,透视表结构的更改会导致函数计算结果发生变化。这两个缺点导致了这个函数使用时不是非常方便。因为有可能需要保留非常多的各种结构的透视表。
CUBE函数
我们今天介绍的CUBE类函数就可以看作GETPIVOTDATA的升级版。这里的升级有三个角度:数据源由一个表升级到了多个表,变成了数据模型。从原来从透视表中取数变成了从数据模型中取数。使用的函数从一个GETPIVOTDATA变成了一组CUBE类函数。现在,我们可以将多个表组织为一个数据模型,从而避免了非得将它们合并为一张表。数据模型中的表被分为两类,维度表(dimension)和事实表(fact),这种将维度表和事实表分开的方式使得我们可以针对维度的不同级别进行非常灵活和精细的分析。

这个分析可以通过透视表来展示,也可以通过各种视觉对象(Power BI)或图表展示。仔细分析这些展示,都可以理解为某个维度上的某个值的汇总。按照这个理解,我们就可以设计函数来实现同样的结果。这就是CUBE类函数的作用。这些函数可以帮助我们非常灵活的利用数据模型强大的计算能力,同时,它们还可以与动态数组和各种新函数,比如LAMBDA函数等结合,从而发挥更加强大的作用。
几个概念
这里需要介绍几个概念。

借用之前做过的3D数据报告理解CUBE概念CUBE,实际上指的是数据模型。如果只有三个维度的话,数据模型就可以类别为一个立方体。借用以前我做过的一个3维数据报告,MEMBER指维度成员。比如,时间维度的MEMBER=Q3。区域维度的MEBER=东区。VALUE指事实(fact)的汇总,或者叫做度量(measure)
用CUBE函数解析超级透视表
实际上,任何视觉对象 (透视表,图表)都可以用CUBE函数实现。下面我们以一个超级透视表为例,解析一下CUBE函数的应用:

这个超级透视表中,我们将其分为8个不同的元素,其中,除了7,8外,其余的都是MEMBER,只有7,8是VALUE。它们分别由下面的公式生成:
//1 度量值成员,需要使用哪一个计算结果?=CUBEMEMBER(
"ThisWorkbookDataModel",“
[Measures].[以下项目的总和:SalesQuantity]“)
//2 产品维度成员=CUBEMEMBER(
"ThisWorkbookDataModel",
"[Product].[ClassName].&[Deluxe]“)
//3 产品维度成员=CUBEMEMBER(
"ThisWorkbookDataModel",
{
"[Product].[ClassName].&[Deluxe]",
"[Product].[ProductName].&[A. Datum Consumer Digital Camera E100 Azure]“})
//4 产品维度成员:总计=CUBEMEMBER(
"ThisWorkbookDataModel",
"[Product].[ClassName].[All]",
"总计“)
//5 时间维度成员=CUBEMEMBER(
"ThisWorkbookDataModel",
"[Calendar].[Year].&[2011]“)
//6 时间维度成员:总计=CUBEMEMBER(
"ThisWorkbookDataModel",
"[Calendar].[Year].[All]",
"总计")
//7 汇总值=CUBEVALUE(
"ThisWorkbookDataModel",
$B$3,$C545,D$4)
//8 汇总值=CUBEVALUE(
"ThisWorkbookDataModel",
$B$3,$B550,D$4)这里只使用了两个CUBE函数:
CUBEMEMBERCUBEVALUE实际上,从CUBE(立方体)的角度理解,就是在一个 三维(多维)空间中,通过坐标定位某个点,然后返回该点(value),在这个透视表中,假设要得到箭头所示的值,就是要通过产品维度和时间维度,以及一个特殊的维度:Measure,来定位:
产品维度坐标为 :Dulex类中的A. Datum Consumer Digital Camera E100 Grey,时间维度坐标为:2012年,
度量值Measure维度为:以下项目的总和:SalesQuantity根据这三个坐标在CUBE中定位,可以得到值:520。这就是第7个公式的作用。
而1~6分别介绍了从CUBE(数据模型)中取出给定成员(MEMBER)的公式,注意公式公式4和6中关于总计的写法与其他成员值的不同)。
有了这个两个函数,我们就可以将超级透视表函数化,而且不再依赖于超级透视表了。
超级透视表转为公式
除了这两个函数,Excel中还有其他的CUBE函数。关于这些CUBE函数的使用,我们下次再详细介绍。
目前,大家可以先自己琢磨一下这两个函数的使用。大家可以在Excel中先创建一个超级透视表,然后在数据透视表分析选项卡中,将透视表转换为公式:

这样,超级透视表就被转换为CUBE函数生成的结果了。详细介绍请看视频

加入E学会,学习更多Excel应用技巧
/portal/learn/class_list
详情咨询客服(底部菜单-知识库-客服)
Excel Power Query Power Pivot Power BI
Power Excel 知识库
按照以下方式进入知识库学习Excel函数 底部菜单:知识库->Excel函数
自定义函数 底部菜单:知识库->自定义函数
Excel如何做 底部菜单:知识库->Excel如何做
面授培训 底部菜单:培训学习->面授培训
Excel企业应用 底部菜单:企业应用
也可以在历史文章中学习Excel,Power Query,Power Pivot,Power BI,Power Automate各种技巧。
在ps教材中RGB的颜色通道
来看看ps教材中RGB的颜色通道及用途?在PS教材中,RGB是指红色(Red)、绿色(Green)和蓝色(Blue)三种颜色通道。这三种颜色通道可以组合成数百万种不同的颜色,用于图像的显示和编辑。RGB的颜色通道在PS教材中的用途如下:图像的颜色选择:RGB颜色通道可以帮助我们选择和调整图像的颜色,包括亮度、饱和度和色调等。站长网2023-07-27 12:21:270000为什么微信聊天尽量不要发语音?看完你就明白了,原因有4个
今天小俊来给大家分享一下,为什么我们在日常生活中,尽量不要给好友发送微信语音电话,看完明白了!朋友们大家好,我是小俊,平时我们在生活中,或者工作上啊,都会经常给好友打微信电话,可以说非常方便,但是为什么却越来越多的朋友,不喜欢给好友打微信电话呢?其实在原因主要有以下几个,看完张知识了!站长网2023-07-28 18:01:430004五彩八卦图精美姓氏微信头像
站长网2023-07-30 12:40:220000被冷落的强大函数SUBTOTAL 常见用法一览
动图所示,只显示筛选后数据的总和。用得着的朋友可以了解一下,只需一个简单的函数就可以实现。SUBTOTAL这个函数本身没有运算规则。第一参数输入1或101,实现函数AVERAGE的功能第一参数输入2或102,实现函数COUNT的功能第一参数输入3或103,实现函数COUNTA的功能……总共可以实现11个其他函数的功能。那么,用SUBTOTAL和用这些函数本身有什么不同呢?站长网2023-07-27 11:10:320001天呐!不愧是精通电脑的高手,原来早就把键盘上的功能全搞清楚了,并
天呐!不愧是精通电脑的高手,原来早就把键盘上的功能全搞清楚了,并且还详细写了出来,让人一看就懂,不得不说即使是电脑小白,也能看清楚明白。建议大家保存下来,尤其是办公室白领、学生或者是经常需要使用的人,尽早把这些快捷键和按键功能背书,不但可以快速提高工作效率,还能彻底解决日常遇见的问题,助你成为电脑高手,瞬间让你在同事与同学当中脱颖而出。站长网2023-07-30 13:22:020000