1职场实例
小伙伴们大家好,今天我们来讲解一个Excel在职场中使用频率最高的技巧之一:“分列”功能。有的小伙伴暗暗窃喜,心里想这还不简单,但是今天我们不是老生常谈“数据-分列”,而是着重普及使用函数的方法实现数据的分列。
如下图所示:
A列为一列名称,每个单元格中的数据都是由一些数字和若干相同的分隔符“/”组合而成的。现在我们想要以分隔符“/”来将数据进行分列操作,结果显示在B~E列中。
下面则是老方法,使用【数据-分列】,根据【分隔符号】:“/”,进行快速的分列,方法想必大家已经用的滚瓜烂熟了。具体看下面动图,不再做过多的文字阐述。
2解题思路
那么用函数替代“分列”,这个Excel使用频率最高的功能到底如何使用呢?接下来我们就分步骤来讲解一下这个嵌套函数。
第一步:
首先使用REPT函数产生8个相同的符号“/”,在B2单元格输入公式:
=REPT("/",8)
效果如下面动图所示,每个单元格都会生成8个相同的“/”。
为什么是8个“/”呢?这与我们后面要使用COLUMN函数和MID函数提取有关。其实这里我们完全可以用一个相对大的(或者极大的)数字来代替,而它的上限我们可以根据需要分列的各个单元格数据中,最后一个出现的分隔符“/”距离首个字符最大的位置确定。本例中A4单元格中的最后一个出现的分隔符“/”距离它的首字符位置数为8,所以这个上限我们用8就完全够用了。
第二步:
用SUBSTITUTE函数将A列中的分隔符“/”用第一步中函数REPT("/",8)产生的8个相同符号“/”替换掉,将B2单元格中的公式修改完善为:
=SUBSTITUTE($A2,"/",REPT("/",8))
由于公式输入完成后,单元格列宽比较小,公式显示不全,我们将列宽增加至公式完全显示出来为止,观察一下公式返回结果的特点,即最初的分隔符“/”变成了“////////”,即8个斜杠。
第三步:
用COLUMN(A1)*8-7计算每段数字第一个字的位置,作为MID函数的第2参数。如本例中,我们分别从函数返回值1*8-7,2*8-7,3*8-7,4*8-7,位置处开始提取(即从1,9,17,25位置处开始提取)。
用MID函数提取每段8个字符,作为MID函数的第3参数。将B2单元格中的公式修改完善为:
=MID(SUBSTITUTE($A2,"/",REPT("/",8)),COLUMN(A1)*8-7,8)
我们观察一下函数返回结果:
发现每个单元格中分列出来的数据大致已经完成了最终分列效果,只是还在分列出来的每段数字前面或后面存在若干“/”。这就是为什么我们在第一步函数中REPT("/",8)用8个“/”来确定了,并且分别从COLUMN(A1)*8-7起始位置处分别进行8个字符的提取,就是为了达到这种效果。
第四步:
最后我们只需要将B~E列每个单元格分列出来的数据中的“/”,替换为空值就行了,效果就是删除多余的“/”。
将B2单元格中的公式修改完善为:
=SUBSTITUTE(MID(SUBSTITUTE($A2,"/",REPT("/",8)),COLUMN(A1)*8-7,8),"/","")
如下图所示:
如果我们直接按照单个数字,即单个字符数量进行分列显示,就更简单了。
我们在B2单元格输入函数公式:
=MID($A2,COLUMN(A1),1)
公式向右复制时,COLUMN(A1)函数部分将依次生成“1,2,3...”递增的自然数序列,作为MID函数的第二参数,即函数提取的起始位置。MID函数在B~E列依次提取A2单元格中的第1~4个字符。