练习题054及答案:如何筛选出所有末级科目?
一、题目要求
上图为出财务软件中导出的科目余额表,请使用筛选功能,筛选出A4:B51中所有的末级科目。
可在第一行第二行设置筛选条件,但不能插入辅助列。
D列数据只是为了方便大家检验筛选结果,不能根据D列来筛选。
二、解题思路
我们在使用Excel时,不管是用基本功能,还是编制公式,都要先观察分析数据,找出数据的规律,针对规律再提出解决方案。
对本案例来说,科目代码都是按科目顺序排列,同一科目先是总账科目,然后是其二级科目,如果还有更明细级的话,接着是三级科目、四级科目。该级科目完了以后,才会是上一层级的下一个科目。
比如第11行是“1002银行存款”的二级科目“1002.31重庆农村商业银行”,该二级科目是末级科目,因为其后没有1002.31.XX了,而是上一层级(1级)的其他科目“1015其他货币资金”。从这个我们可以看出,它有这样一个特点:
如果后面没有更明细级的科目,那么它就是末级科目,什么才是没有更明细级?就是后面的行中不会有该科目代码+“.XX”的科目,在E5单元格用公式来表示就是:
=VLOOKUP(A5&".*",A6:$A$51,1,0)
星号*是通配符,代表任意多个字符。
如果其计算结果是#N/A,那么它就是最末级,否则,就不是最末级。
根据这个原理,我们可以利用它来编制高级筛选的条件,在B2单元格输入公式:
=ISNA(VLOOKUP(A5&".*",A6:$A$51,1,0))
然后按下面的条件设置高级筛选:
筛选的结果为黄色的行,都是末级科目。
除了上面的判断条件,我们还可根据科目代码的长度来判断,凡是科目代码的长度大于下一行科目代码的,都是末级科目,否则,就不是末级科目。在B2单元格用公式设置筛选条件:
=LEN(A5)>=LEN(A6)
然后用B1:B2为筛选条件,使用高级筛选来筛选。
关于高级筛选的知识点介绍,可参见本公众号下面二篇文章:
练习题049及答案:筛选出借贷方均为银行存款的凭证(操作题)
另:普通筛选的使用技巧
更多筛选的知识点和精彩应用,请参见《“偷懒”的技术:打造财务Excel达人》第三章。