今天教一个最近经常被问到的编号问题:如何对一个有空单元格的区域自动跳空顺序编号?三个方案请收好。
案例:
给下图 1 中“姓名”非空的行按顺序填充序列号,效果如下图 2 所示。
解决方案 1:1. 在 C12 单元格中输入以下公式 --> 向下拖动复制公式:
=IF(D2="","",MAX(A$1:A1)+1)
公式释义:
MAX(A$1:A1):
提取区域 A$1:A1 中的最大值;
随着公式下拉,起始单元格不变而截止单元格不断增加,即区域不断扩大;
当区域为空值时,最大值为 0;
+1:将上述区域中的最大值 +1,于是生成步长为 1 不断递增的序列;
IF(D2="","",...):如果 D2 单元格为空值,则显示空值;否则就等于上述计算结果;也就是遇到空值自动跳过,从而实现案例需求
* max 函数的第一个参数的行要固定,而后一个参数则需要相对引用。
解决方案 2:1. 也可以使用如下公式:
=IF(D2<>"",COUNTA($D$2:D2),"")
公式释义:
COUNTA($D$2:D2):counta 函数的作用是统计区域中的非空单元格的数量;随着非空区域增加,实现递增计数的目的;
IF(D2<>"",...,""):D 列的单元格非空的时候才显示公式值;如果为空,即遇到不需要编号的跳空行时,显示空值
解决方案 3:下面这种方法借助一下筛选操作,使公式变得更简单。
1. 选中数据表的任意单元格 --> 选择菜单栏的“数据”-->“筛选”
2. 点击“月份”旁边的筛选按钮 --> 在弹出的菜单中取消勾选“(空白)”--> 点击“确定”
3. 在 A2 单元格中输入以下公式 --> 下拉复制公式:
=MAX($A$1:A1)+1
这段公式在方案 1 中已经解析过,此处就不重复写了。之所以比方案 1 的公式简单,是因为在筛选的状态下下拉公式,隐藏起来的单元格中不会被复制到公式,因此也就不需要套用 if 了。
4. 取消筛选设置。