前几天,一个学生咨询我一个这样的问题,如下图,要求从A列中,提取真正为的科目编码。A列中,真正的科目编码后面都有长度不一的数字0,实际上是将位数不同的科目编码补足个数不定的数字0,让每个单元格的数字位数统一。这是从ERP导出的数据,也不知道ERP为什么要这样做。乍一看,这个问题似乎可以从这个思路入手:逐个判断每个数字,如果最后一个数字不是0,其右侧的所有数字都是0,那么左边的数字就是真正的科目编码。那么问题来了:真正的科目编码里也会含有数字0,而且判断某个不是0的数字后面所有数字都是0,这种判断处理看起来似乎是比较麻烦的。还有一个更简单的思路,是根据科目编码的特征来解决:因为真正的科目编码的位数只能是4位、8位、12位、16位、20位、24位.....,也就是说,真正科目编码是4位的倍数,因此,我们可以从原始数据中,使用MID函数分别提取出第1位开始、第5位开始、第13位开始、第17位开始、第21位开始、第25位开始的四位数字......,并判断是否为第5位、9位、13位、17位、21位、25位.....数字是否为0,使用MATCH函数定位出该0的位置,那么就可以使用LEFT函数提取真正的科目编码了。要特别注意,由于是每4个数字MID一次,因此公式中还要进行换算。=LEFT(A2,(MATCH(0,MID(A2,{1;5;9;13;17;21;25},4)*1,0)-1)*4)
=LEFT(A2,(MATCH(0,MID(A2,{1;5;9;13;17;21;25},4)*1,0)-1)*4)
{1271;0;0;0;0;0;0}
{1002;1;6;3305;0;0;0}
{1001;1;0;0;0;0;0}
{1002;1;6;3307;0;0;0}
本案例比较烧脑(烧就烧吧,不烧不灵),感兴趣的朋友多寻找几个解决方案。韩小良著,中国水利水电出版社出版,新书《Excel 2024/365 函数与公式高级应用》,扫描下面图表右下角的二维码链接购买,或者自己去京东、当当、淘宝、天猫等网站搜索选购。本书结合249个实际案例,配套273集(1280分钟)的教学视频,详细介绍20余个新函数,快速学习并应用到实际工作中。