平淡
比如在圖1中A列為科目編碼,B列為科目的中文名稱(chēng),層級(jí)之間為左對(duì)齊,現(xiàn)在需要轉(zhuǎn)換為F列、G列的樣式(圖1)。
1需求分析
從上圖中可以看出,轉(zhuǎn)換后的完整科目是由一級(jí)科目(4位編碼)、二級(jí)科目(假設(shè)有,共6位編碼,添加2位部門(mén)編碼)和三級(jí)科目(假設(shè)有,共8位編碼,再添加2位員工編碼)組成的,也就是根據(jù)B列的科目級(jí)別,依次將編碼對(duì)應(yīng)的中文科目名稱(chēng)使用“-”符號(hào)連接在一起,這可以使用TEXTJOIN函數(shù)來(lái)完成。
2提取一級(jí)科目名稱(chēng)
在C2單元格中輸入公式“=IFS(LEN(A2)=4,B2,LEN(A2)<>4,C1)”并下拉填充,即可完成一級(jí)科目名稱(chēng)的提?。▓D2)。
公式解釋?zhuān)?/p>
先使用LEN函數(shù)算出A2單元格中的文本字符串的字符數(shù),然后使用IFS函數(shù)做出判斷,如果字符數(shù)是4位(即對(duì)應(yīng)一級(jí)科目),那么顯示B2單元格中的數(shù)值(即對(duì)應(yīng)的中文科目名稱(chēng)),否則就顯示上一個(gè)單元格中的數(shù)值。
3提取二級(jí)、三級(jí)科目名稱(chēng)
在D2單元格中輸入公式“=IFS(LEN(A 2)= 4," ", LEN(A 2)=7,B2,LEN(A 2)<>7,D1)”、E2單元格中輸入公式“=IFS(LEN(A 2)=4,"",LEN(A 2)=7,"",LEN(A 2)=9,B2)”,下拉填充公式后即可完成二級(jí)、三級(jí)科目名稱(chēng)的提取(圖3)。公式解釋同上。
4連接各級(jí)科目
在G2單元格中輸入公式“=TEXTJOIN("-",TRUE,C2:E2)”,下拉填充公式后就可以完成各級(jí)科目的連接了(圖4)。
公式解釋?zhuān)?/p>
“-”為各科目間的連接符號(hào),參數(shù)“TRUE”表示忽略空值,“C2:E2”為連接區(qū)域,即上述提取的一級(jí)、二級(jí)、三級(jí)科目的中文名稱(chēng)。
最后將C~F列隱藏,以后只需將軟件導(dǎo)出的數(shù)據(jù)分別粘貼在A列和B列中,在G列中就可以自動(dòng)完成科目的轉(zhuǎn)換了。
如果在圖5的左側(cè),軟件導(dǎo)出的層級(jí)科目采用了段首縮進(jìn)的方式,現(xiàn)在需要將其轉(zhuǎn)換為右側(cè)的樣式(圖5)。
1需求分析
本例和上例不同的是,這里從二級(jí)科目開(kāi)始,每個(gè)級(jí)別的中文名稱(chēng)和上一級(jí)科目之間有4個(gè)空格縮進(jìn),因此需要?jiǎng)h除縮進(jìn)的空格,可以使用MID函數(shù)來(lái)完成。
2提取一級(jí)科目名稱(chēng)
在C2單元格中輸入公式“=IFS(LEN(A2)=4,B2,LEN(A2)<>4,C1)”并下拉填充,即可完成一級(jí)科目名稱(chēng)的提取。
3提取二級(jí)科目名稱(chēng)
在D2單元格中輸入公式“=IFS(LEN(A2)=4,"",LEN(A2)=7,MID(B2,5,15),LEN(A2)<>7,D1)”并下拉填充,即可完成二級(jí)科目名稱(chēng)的提?。▓D6)。
公式解釋?zhuān)?/p>
使用IFS函數(shù)判斷A2單元格中的文本字符串的位數(shù),如果是一級(jí)科目就顯示為空,如果是二級(jí)科目,那么使用MID函數(shù)從B2單元格中的字符串的第5位開(kāi)始(因?yàn)榍懊嬗袃蓚€(gè)中文空格,計(jì)四個(gè)字符),向右提取15個(gè)字符。向右提取的字符數(shù)請(qǐng)根據(jù)科目的最長(zhǎng)字?jǐn)?shù)來(lái)設(shè)置,假如最長(zhǎng)科目的字?jǐn)?shù)是20,那么字符數(shù)就設(shè)置為25。
4提取三級(jí)科目名稱(chēng)
在E2單元格中輸入公式“=IFS(LEN(A2)=4,"",LEN(A2)=7,"",LEN(A2)=9,MID(B2,9,15))”并下拉填充即可(圖7)。公式解釋同上,只不過(guò)從第9位開(kāi)始提取字符(因?yàn)槿?jí)科目前有四個(gè)中文空格)。
5完成科目組合
在F2單元格中輸入公式“=TEXTJOIN("-",TRUE,C2:E2)”并下拉填充,最后將C~E列隱藏,即可完成最終的轉(zhuǎn)換(圖8)。