上篇公众号由黑山老妖为大家展示了如何用函数公式将完整会计科目按一级、二级、三级…这样拆分,今天将为大家介绍如何编制完整会计科目!
模拟数据及公式处理效果如下:
公式:C2=IFERROR(VLOOKUP(LEFT(A2,LOOKUP(9E+307,FIND('.',A2,ROW(INDIRECT('1:'&LEN(A2)))))-1),A$1:C1,3,0)&'-'&B2,B2)
公式解析:以C6单元格公式=IFERROR(VLOOKUP(LEFT(A6,LOOKUP(9E+307,FIND('.',A6,ROW(INDIRECT('1:'&LEN(A6)))))-1),A$1:C5,3,0)&'-'&B6,B6)为例进行解析。
第一步:
用函数FIND找到点(.)在A6单元格中的位置
函数FIND第三参数至关重要,即从A6单元格内容中哪个字符开始找,
所以首先要判断A6单元格的字符数,LEN(A6)=10即A6单元格有10个字符,分别从1到 LEN(A6)=10个字符查找,要用函数ROW构造得到{1;2;3;4;5;6;7;8;9;10}这样的序列,用ROW('1:'&LEN(A6))是不可取的,借助函数INDIRECT,即ROW(INDIRECT('1:'&LEN(A6))),
FIND(找什么,从哪里找,从哪个字符开始找)
FIND('.',A6,ROW(INDIRECT('1:'&LEN(A6))))部分得到{5;5;5;5;5;8;8;8;#VALUE!;#VALUE!}
第二步:
用函数LOOKUP返回最后一个数值,即A6单元格内容中最后一个点(.)所在的位置
LOOKUP(9E+307,{5;5;5;5;5;8;8;8;#VALUE!;#VALUE!})找到最后一个数值为8, 9E+307为Excel允许录入的最大数值,也有人喜欢用9^9取代,LOOKUP部分得到结果为8,即A6单元格中字符串1002.01.01的最后一个点(.)所在的位置为8
第三步:
提取最后一个点(.)所在位置之前的所有字符串
用函数LEFT提取,8为最后一个点(.)所在的位置,提取之前的字符串所以要减1,LEFT部分得到科目编号为1002.01
第四步:
用函数VLOOKUP找到科目编号为1002.01所对应的完整会计科目
这里要注意函数VLOOKUP的第二参数A$1:C5,其效果为
由此可以看出想要返回的结果在第三列,所以函数VLOOKUP的第三参数为3,函数VLOOKUP部分得到'银行存款-中国银行'
第五步:
连接其对应的B列会计科目即B6单元格内容
得到的'银行存款-中国银行-猫哥'就是我们要的完整会计科目
第六步:
容错(即出现错误值后要返回的值)
当A列科目编号中用函数FIND找不到点(.)时就会出现错误值#VALUE!,函数LOOKUP部分没有最后一个数值返回就出现错误值#N/A,所以最后一步用函数IFERROR容错,当出现错误值时返回其科目编号对应的本身B列会计科目。
如例题中A4单元格内容1002中没有点(.)出现错误值,用函数IFERROR容错后返回其科目编号对应的本身B列会计科目B4单元格内容银行存款。
联系客服