如果Excel工作表包含序号列,在进行自动筛选后,由于某些行被隐藏,序号会变得不连续。要让筛选后的序号还是从“1”开始的连续数字,可以用下面的公式自动生成序号,假如第一行为标题行,序号在第一列。
筛选前,在A2中输入公式:
=SUBTOTAL(3,$B$1:B1)
或:
=SUBTOTAL(103,$B$1:B2)
然后拖动或双击填充柄向下填充公式,可以看到在筛选前后公式都在A列生成从“1”开始的连续数字。
说明:SUBTOTAL函数忽略筛选后所有隐藏的行,其第一个参数为“3”或“103”,表示用COUNTA函数进行计算,如果为“3”,则仅对筛选隐藏的行适用,如果为“103”,则对用“隐藏行”命令或筛选命令隐藏的行都适用。由于引用了第二列区域,该公式要求第二列不包含空单元格。
在Excel 2010中,还可以用新增的AGGREGATE函数,其作用类似于SUBTOTAL函数,但其功能更强。A列的公式可作如下修改,以A2单元格为例:
=AGGREGATE(3,5,$A$1:A1)
其第二个参数为“5”,表示仅忽略隐藏行,而不忽略嵌套AGGREGATE函数(不同于SUBTOTAL函数),这样此处就可以引用同列中公式的结果,而与其他列无关。如A6单元格中的公式为:
=AGGREGATE(3,5,$A$1:A5)
虽然A2:A5区域的公式中包含了AGGREGATE函数,但都没有被忽略,因而能够返回正确的结果。