不少公司在用车商融、用友等电算化会计软件,但这类软件导出的会计科目为层级显示,有的为左对齐,有的则为段首缩进。为了便于财务职员查询,目前需要将它们转换为一级科目-二级科目-三级科目的形式。对于类似结构的表格转换,手工操作效率非常低,假如借用Excel 2019的内置函数就简单多了。
1、层级为左对齐的转换
譬如在图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(A2)=4,,LEN(A2)=7,B2,LEN(A2)7,D1)、E2单元格中输入公式=IFS(LEN(A2)=4,,LEN(A2)=7,,LEN(A2)=9,B2),下拉填充公式后即可完成二级、三级科目名字的提取(图3)。公式讲解同上。

4.连接各级科目
在G2单元格中输入公式=TEXTJOIN(-,TRUE,C2:E2),下拉填充公式后就能完成各级科目的连接了(图4)。

公式讲解:
-为各科目间的连接符号,参数TRUE表示忽视空值,C2:E2为连接地区,即上述提取的一级、二级、三级科目的中文名字。
最后将C~F列隐藏,将来仅需将软件导出的数据分别粘贴在A列和B列中,在G列中就能自动完成科目的转换了。
2、层级为段首缩进的转换
假如在图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)。






