当对数据执行筛选后或手工隐藏部分行之后编号就会间断。图7.11中A列是通过填充产生的连续编号,图 7.12 则是筛选后的状态,从图中可以看出,部分编号已经被隐藏起来,编号也就失去了作用。

Excel 是否可以生成不间断的编号?-Excel22

图7.11 未筛选时的编号

Excel 是否可以生成不间断的编号?-Excel22

图7.12 筛选后的编号

是否有办法让编号在筛选前后都不间断呢?

解题步骤

筛选状态和非筛选状态的区别是筛选状态下存在隐藏行,不符合条件的行会隐藏起来。要求筛选状态下编号不间断,只要计算公式右方的非空单元格数量即可,操作步骤如下。

1.在A2单元格输入公式“=SUBTOTAL(103,$B$2:B2)”,公式的含义是计算以B2开始、B2结束的区域中有多少个非空单元格。

2.将A2的公式向下填充到A11单元格,公式将产生1到11的连续自然数编号,效果如图7.13所示。

3.单击C1单元格的倒三角按钮,然后从弹出的菜单中依次选择“数字筛选”→“大于”,弹出“自定义自动筛选方式”对话框,在对话框中按图7.14所示的方式设置筛选条件。

Excel 是否可以生成不间断的编号?-Excel22

图7.13 使用公式生成序号

Excel 是否可以生成不间断的编号?-Excel22

图7.14 筛选大于80的成绩

4.单击“确定”按钮执行筛选,同时返回工作表界面,此时可以发现成绩表只剩下4行数据,其他数据已经隐藏起来,但是A列公式产生的编号并没有间断,效果如图7.15所示。

Excel 是否可以生成不间断的编号?-Excel22

图7.15 筛选后编号不间断

5.单击功能区的“数据”→“筛选”,从而取消筛选。

6.选择第3行,然后在按住Ctrl键的同时再选择第5行、第9行,单击右键并从右键菜单中选择“隐藏”,此时可以发现A列的编码仍然不会间断,效果如图7.16所示。

Excel 是否可以生成不间断的编号?-Excel22

图7.16 隐藏行后序号不间断

知识扩展

1.SUBTOTAL属于分类汇总函数,包含11种汇总方式。SUBTOTAL函数的语法如下:

Excel 是否可以生成不间断的编号?-Excel22

其中第一参数function_num用于控制汇总类型,其赋值范围是数字1~11或101~111,当值在 1~11 范围内时表示计算所有行,当值在 101~111 范围内时表示不计算隐藏行。本例公式“=SUBTOTAL(103,$B$2:B2)”中第一参数使用103,因此它会自动忽略隐藏的行。

SUBTOTAL支持最多255个参数,第2个到第255个参数代表需要计算的区域,其中第3个到第255个参数属于可选参数,允许不写。因此本例公式“=SUBTOTAL(103,$B$2:B2)”的含义是计算B2开始、公式右方的单元格结束的区域中的非空单元格数量。

2.SUBTOTAL函数的第一参数代表11种汇总方式,赋值范围与含义见表7.1。

表7.1 SUBTOTAL函数的第一参数的赋值范围与功能

Excel 是否可以生成不间断的编号?-Excel22

3.SUBTOTAL函数的第一参数不管使用3还是103,都能在筛选状态下忽略隐藏区域计算数据,但是对于手工隐藏行或列时只能用103才能忽略隐藏区域,使用3时会计算所有单元格的值。

4.本例中SUBTOTAL函数的第二参数采用$B$2:B2,其含义是锁定区域的起点,从而使公式下拉时永远都引用B2开头的区域,而结束区域则是变化的,由公式所在位置决定。当公式在A4时引用区域是$B$2:B4,当公式在A9时引用区域则是$B$2:B9。