有没有一种方法,可以自动将位数很多的数值缩位,以它最合适的数值单位显示?
案例:
将下图 1 中的数据表按照每个数值所在区间的单位显示,以便于读取:
>= 十亿的,以十亿“B”为单位;
>= 100 万的,以百万“M”为单位;
>= 1000 的,以千“K”为单位
为什么选取上述三种单位,而不是万、十万?因为这是按照每千分位符为一个递进单位转换的,符合国际上惯用的统计规则。
本案例中,我们暂且不考虑负数的情况。
效果如下图 2 所示。
解决方案 1:
1. 选中 A2:A11 区域 --> 按 Ctrl+1
2. 在弹出的对话框中选择“数字”选项卡 --> 选择“自定义”--> 在类型区域输入以下规则 --> 点击“确定”:
[<1000000]#,###.0,"K";[<1000000000]#,###.0,,"M";#.0,,,"B"
释义:
用两个“;”分隔了三段格式;
[<1000000]#,###.0,"K":如果数值 <1000000,将单位设置为 K,格式为 #,###.0,;
[<1000000000]#,###.0,,"M":如果 <1000000000,则使用百万格式 #,###.0,,;
其他情况下,即 >=1000000000 时,设置为十亿格式 #.0,,,"B"
格式成功设置完成。
解决方案 2:
1. 在旁边的空白区域按以下方式构建查询区间。
2. 在 B2 单元格中输入以下公式 --> 下拉复制公式:
=TEXT(A2,LOOKUP(A2,$D$2:$D$4,$E$2:$E$4))
公式释义:
LOOKUP(A2,$D$2:$D$4,$E$2:$E$4):
lookup 函数用于模糊查找,语法为 lookup(要查找的值, 在哪里查找, 要返回的结果区域);
lookup 会遍历区域查找出精确匹配的结果,如果无法精确匹配,则会找出比它小的最大值;比如,如果查找 15000,那么按照规则就会匹配到 1,000;
TEXT 函数的作用是用于指定单元格格式;语法为 text(要指定格式的值,格式);
这里 text 的第二个参数就是 lookup 的查找结果,与前一个解决方案中所设置的格式一致