平淡
比如在圖1中A列為科目編碼,B列為科目的中文名稱,層級之間為左對齊,現在需要轉換為F列、G列的樣式(圖1)。

1需求分析
從上圖中可以看出,轉換后的完整科目是由一級科目(4位編碼)、二級科目(假設有,共6位編碼,添加2位部門編碼)和三級科目(假設有,共8位編碼,再添加2位員工編碼)組成的,也就是根據B列的科目級別,依次將編碼對應的中文科目名稱使用“-”符號連接在一起,這可以使用TEXTJOIN函數來完成。
2提取一級科目名稱
在C2單元格中輸入公式“=IFS(LEN(A2)=4,B2,LEN(A2)<>4,C1)”并下拉填充,即可完成一級科目名稱的提取(圖2)。
公式解釋:
先使用LEN函數算出A2單元格中的文本字符串的字符數,然后使用IFS函數做出判斷,如果字符數是4位(即對應一級科目),那么顯示B2單元格中的數值(即對應的中文科目名稱),否則就顯示上一個單元格中的數值。
3提取二級、三級科目名稱
在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)”,下拉填充公式后即可完成二級、三級科目名稱的提取(圖3)。公式解釋同上。
4連接各級科目
在G2單元格中輸入公式“=TEXTJOIN("-",TRUE,C2:E2)”,下拉填充公式后就可以完成各級科目的連接了(圖4)。
公式解釋:
“-”為各科目間的連接符號,參數“TRUE”表示忽略空值,“C2:E2”為連接區域,即上述提取的一級、二級、三級科目的中文名稱。
最后將C~F列隱藏,以后只需將軟件導出的數據分別粘貼在A列和B列中,在G列中就可以自動完成科目的轉換了。

如果在圖5的左側,軟件導出的層級科目采用了段首縮進的方式,現在需要將其轉換為右側的樣式(圖5)。
1需求分析
本例和上例不同的是,這里從二級科目開始,每個級別的中文名稱和上一級科目之間有4個空格縮進,因此需要刪除縮進的空格,可以使用MID函數來完成。
2提取一級科目名稱
在C2單元格中輸入公式“=IFS(LEN(A2)=4,B2,LEN(A2)<>4,C1)”并下拉填充,即可完成一級科目名稱的提取。
3提取二級科目名稱
在D2單元格中輸入公式“=IFS(LEN(A2)=4,"",LEN(A2)=7,MID(B2,5,15),LEN(A2)<>7,D1)”并下拉填充,即可完成二級科目名稱的提取(圖6)。
公式解釋:
使用IFS函數判斷A2單元格中的文本字符串的位數,如果是一級科目就顯示為空,如果是二級科目,那么使用MID函數從B2單元格中的字符串的第5位開始(因為前面有兩個中文空格,計四個字符),向右提取15個字符。向右提取的字符數請根據科目的最長字數來設置,假如最長科目的字數是20,那么字符數就設置為25。
4提取三級科目名稱
在E2單元格中輸入公式“=IFS(LEN(A2)=4,"",LEN(A2)=7,"",LEN(A2)=9,MID(B2,9,15))”并下拉填充即可(圖7)。公式解釋同上,只不過從第9位開始提取字符(因為三級科目前有四個中文空格)。
5完成科目組合
在F2單元格中輸入公式“=TEXTJOIN("-",TRUE,C2:E2)”并下拉填充,最后將C~E列隱藏,即可完成最終的轉換(圖8)。