在工作中会经常接触要筛选的表格,表格筛选后序号是错乱的。
在工作中会经常接触要筛选的表格,表格筛选后序号是错乱的。若直接打印出来给上级领导审阅或者留着存档,对于阅读者来说,造成的一定的不必要的困扰。用subtotal函数就可以较好地解决该问题。(当然,还有其他很多办法。)
如图1所示,若直接筛选,A列中的序号就会乱。
(图1)
只需要在A2单元格中输入如下函数,就可以很好地解决这类尴尬的事情。
=SUBTOTAL(103,$B$2:B2)*1
然后,向下填充就可以了。如图2所示。
【解析】
【以下解析,可能会让不经常接触函数的童鞋不好理解,可以跳过,不影响函数使用。】
1.第一个参数是103,用于返回非空非隐藏的单元格的个数;第二个参数$B$2:B2中,第一个B2需要绝对引用,而第二个B2不用。如果不绝对引用,则返回的序号都是1。
2.SUBTOTAL的语法是:
SUBTOTAL(function_num,ref1,[ref2],...)
Function_num必需。数字 1-11 或 101-111,用于指定要为分类汇总使用的函数。如果使用 1-11,将包括手动隐藏的行,如果使用 101-111,则排除手动隐藏的行;始终排除已筛选掉的单元格。
【说人话】就是=SUBTOTAL(103,$B$2:B2)*1与=SUBTOTAL(3,$B$2:B2)*1的上述的情形效果是一样的。但是如果有手动隐藏的行,=SUBTOTAL(103,$B$2:B2)*1依然能连续显示,=SUBTOTAL(3,$B$2:B2)*1的序号则会有缺失(缺失的就是被手动隐藏行的对应序号。)
3. SUBTOTAL函数第一个参数还有很多用法,可以参照微软官网提供的函数帮助来理解。这里不展开讲了。
4.在函数最后乘1是为了避免在某些版本中筛选之后总是存在最后一行的一个BUG。
Tips1:SUBTOTAL函数随着参数的变化,相当于多个函数。
Tips2:涉及的小技巧都是周边朋友和同事工作时候遇到的问题,所以文章总是一会函数,一会VBA这样东弄弄,西弄弄。还请谅解。
Tips3:如有错误,麻烦多多指正,感谢。
Tips4:万丈高楼平地起!