利用LEFT、RIGHT、COLUMUNS函数组合,巧妙将数值拆分成单个数字

在工作中经常会用到将数字拆分成单个数字的实例,例如财务的发票格式。今天就讲解一下这种方法的实现过程。

首次我们看下面的截图,要求把日销售金额拆分成单个的数字并按顺序填入后面的单元格中,并在前面加上符号¥。如何在EXCEL中轻松实现呢?还是靠函数来解决。

利用LEFT、RIGHT、COLUMUNS函数组合,巧妙将数值拆分成单个数字

我们先分析一下,建立我们的大概思路。注意到上述的要求只要在C3单元格的数值的右边先截取相应的位数,取得的数值后,再从它的左边截取一位就可以实现了。就按照这个思路来设计我们的公式。

首先,要在右边截取相应的位数,因为是不固定长度的,这就要我们灵活运用一下之前学习过的知识,想到有个COLUMNS这个函数,这个函数可以返回区间的列数,那么,如果我们设计成一个起始区域是可变的,终了区域是固定的函数,这样就可以实现我们的要求。不可变的区域就是绝对引用了,我们试着写出这个公式:COLUMUNS(D:$L)。这个公式在D3单元格时返回的是9,即D到L共9列;当在E3中时时就是COLUMUNS(E:$L)返回的值是8,即E到L共是8列;当在F3中时时就是COLUMUNS(F:$L)返回的值是7,即F到L共是7列;依次类推就达到了我们公式的设计要求。

其次,有了上面的可变的右边截取的长度,就可以写出右截取的公式了,

right(C3,COLUMUNS(D:$L)),这样就实现了右截取的步骤。

利用LEFT、RIGHT、COLUMUNS函数组合,巧妙将数值拆分成单个数字

第三,在上面公式基础上完成左截取。这就简单了,就是left(right(C3,COLUMUNS(D:$L)),1)

后面的1可以省略的,带上也可以,增加公式的可读性。

到这里就基本实现了我们的要求,但还不能完全的实现。我们继续的研究。

第四,细节处理之一。我们看到C列的数值是带小数点的,而后面的分割数字要把小数点去掉,怎么办呢?就是扩大倍数。在金额的单位中最小是分,这样我们就扩大100倍。即C3的数值要乘以100.把此数值作为我们要处理的数值。

第五,细节处理之二 。我们还注意到C列有的数值位数在D到L列是不能完全一致的,这就要在前面用空值补充,同时加上符号¥,所以在公式中的前面再加上空值和¥的组合即" ¥"。

这样在实现左截取时,当位数不足时就截取了空值。

第六,细节处理之三 。在公式填充时,用于采集原始数据的C列是不会改变的,所以C列是绝对引用,表示为$C3.这样在公式向右填充时才能和要求一致。

第七,在公式的最外层应该是个判断函数IF,如果C3单元格有值,用上面的方法填充,如果没有值,则为空值。

以上的过程实现了我们的公式,大家可以先想想最后公式的样子再看我下面的结果。

在D3中输入公式:

=IF($C3,LEFT(RIGHT(" ¥"&$C3*100,COLUMNS(D:$L))),""),对照一下上面公式的思路,是不是明白呢?

D3的公式分别向下和向右填充就等到了我们的公式,如上面的公式截图。

下面看我们的输出结果:

利用LEFT、RIGHT、COLUMUNS函数组合,巧妙将数值拆分成单个数字

完全达到了我们的目的。

今日知识技巧:

用COLUMUNS(D:$L)来实现不同截取区域的变化。这是很实用的技巧,在公式编写时当需要数值的变化时,可以用此方法实现变化的需求。这里用了绝对引用作为最后的截止标识,而起始的区域是变化的。

每篇文章后我都会附上本篇文章的小技巧,希望大家掌握。


分享到:


相關文章: