看过几位老师分享的用动态格式显示“万亿”的教学,颇受启发。但也发现有一个共同的问题,就是他们都修改了原值,所以基本都只能用在表或者矩阵里。如果要用在图里,就可能会出现比例不正确的问题。
思路
许多老师使用动态格式的时候,都在真正的考虑“格式”,所以都是在利用#,.0?!
等这些符号的组合来实现想要的效果。
但实际上,我们还可以有另外一种方法来实现。我称之为“指鹿为马”的方式。如上图所示,单元格中的数字明明是9
,但我可以让它显示为8
。实现方法,就是使用自定义格式,"8"
。同理,我也可以让90000
,显示为9万
。
在Power BI中,我们可以使用度量值动态控制这个自定义格式,使之成为"1.1亿"
、"1.1万"
等,根据度量值大小动态生成结果。
如此做的话,没有修改原先的值大小,但实现了精确控制所要显示的内容。可以显示多少万,也可以显示多少亿。
动态格式文本
IF(
ABS(SELECTEDMEASURE())>=10^8,
""""&FORMAT(ABS(SELECTEDMEASURE())/100000000,"0.00")&""""&"亿",
IF(
ABS(SELECTEDMEASURE())>=10^4,
""""&FORMAT(ABS(SELECTEDMEASURE())/10000,"0.00")&""""&"万",
SELECTEDMEASUREFORMATSTRING()
)
)
动态格的写法如果上图所示,其中连用4个双引号 """"
,是为了表示一个被引用的双引号。左右两边的双引号表示引用,中间的""
,表示被引用的是一个双引号。如果我们在动态格式中书写了""""8""""
,它就等同于在Excel的自定义格式中书写了"8"
。
而FORMAT(ABS(SELECTEDMEASURE())/10000,"0.00")
则是为了实现保留2位小数的效果。之所以,在SELECTEDMEASURE()
外面套上ABS()
,是因为:如果我们对-10000
套用自定义格式"-1.00万"
的话,显示结果会是--1.00万
。为此,我们需要套上ABS()
,使自定义格式为"1.00万"
。
实现的效果
用这种方法写出的度量值,既可以用在表中,也可以用在图中。因为值没有被改变,所以图的形状也不会产生变化。
示例文件:
下载链接:
提取码:1234