上篇公眾號由黑山老妖為大家展示了如何用函數(shù)公式將完整會計(jì)科目按一級、二級、三級…這樣拆分,今天將為大家介紹如何編制完整會計(jì)科目!
模擬數(shù)據(jù)及公式處理效果如下:
公式: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)為例進(jìn)行解析。
第一步:
用函數(shù)FIND找到點(diǎn)(.)在A6單元格中的位置 函數(shù)FIND第三參數(shù)至關(guān)重要,即從A6單元格內(nèi)容中哪個字符開始找, 所以首先要判斷A6單元格的字符數(shù),LEN(A6)=10即A6單元格有10個字符,分別從1到 LEN(A6)=10個字符查找,要用函數(shù)ROW構(gòu)造得到{1;2;3;4;5;6;7;8;9;10}這樣的序列,用ROW('1:'&LEN(A6))是不可取的,借助函數(shù)INDIRECT,即ROW(INDIRECT('1:'&LEN(A6))), FIND(找什么,從哪里找,從哪個字符開始找) FIND('.',A6,ROW(INDIRECT('1:'&LEN(A6))))部分得到{5;5;5;5;5;8;8;8;#VALUE!;#VALUE!}
第二步:
用函數(shù)LOOKUP返回最后一個數(shù)值,即A6單元格內(nèi)容中最后一個點(diǎn)(.)所在的位置 LOOKUP(9E+307,{5;5;5;5;5;8;8;8;#VALUE!;#VALUE!})找到最后一個數(shù)值為8, 9E+307為Excel允許錄入的最大數(shù)值,也有人喜歡用9^9取代,LOOKUP部分得到結(jié)果為8,即A6單元格中字符串1002.01.01的最后一個點(diǎn)(.)所在的位置為8
第三步:
提取最后一個點(diǎn)(.)所在位置之前的所有字符串 用函數(shù)LEFT提取,8為最后一個點(diǎn)(.)所在的位置,提取之前的字符串所以要減1,LEFT部分得到科目編號為1002.01
第四步:
用函數(shù)VLOOKUP找到科目編號為1002.01所對應(yīng)的完整會計(jì)科目 這里要注意函數(shù)VLOOKUP的第二參數(shù)A$1:C5,其效果為
由此可以看出想要返回的結(jié)果在第三列,所以函數(shù)VLOOKUP的第三參數(shù)為3,函數(shù)VLOOKUP部分得到'銀行存款-中國銀行'
第五步:
連接其對應(yīng)的B列會計(jì)科目即B6單元格內(nèi)容 得到的'銀行存款-中國銀行-貓哥'就是我們要的完整會計(jì)科目
第六步:
容錯(即出現(xiàn)錯誤值后要返回的值) 當(dāng)A列科目編號中用函數(shù)FIND找不到點(diǎn)(.)時(shí)就會出現(xiàn)錯誤值#VALUE!,函數(shù)LOOKUP部分沒有最后一個數(shù)值返回就出現(xiàn)錯誤值#N/A,所以最后一步用函數(shù)IFERROR容錯,當(dāng)出現(xiàn)錯誤值時(shí)返回其科目編號對應(yīng)的本身B列會計(jì)科目。 如例題中A4單元格內(nèi)容1002中沒有點(diǎn)(.)出現(xiàn)錯誤值,用函數(shù)IFERROR容錯后返回其科目編號對應(yīng)的本身B列會計(jì)科目B4單元格內(nèi)容銀行存款。 |
|