分享

当序号填充遇到空行时,你能跨过去吗?

 Excel情报局 2025-04-29 发布于河北
图片

Excel情报局

职场联盟Excel

探索挖掘分享Excel实用技能
Super Excel Man
用1%的Excel基础搞定99%的职场难题
做一个超级实用的Excel公众号
Excel是门手艺玩转需要勇气
数万表格爱好者聚集地
图片


大家好,今天我们来讲解一个关于填充序号的特殊需求的解决方法。

如下图所示
C列有相同的“类别”数据,并且不同的“类别”数据交界处都会存在一行空行作为间隔。

我们想要进行序号的填充,要求就是:相同的类别数据的序号是相同的,不同的类别序号是由1开始顺序递增的,并且填充序号时会自动跳过空行的空值单元格。



首先我们先来做一个逻辑判断:
=C2<>C1

我们人为使C2单元格与上一单元格C1内容做一个不等于的逻辑式。这样我们下拉填充公式后,其实判断的就是C列的当前单元格内容与上一单元格内容是否不相同。很明显会返回逻辑值TRUE或FALSE。

C列的当前单元格内容与上一单元格内容不相同时,返回TRUE,相同时,返回FALSE。


其实在Excel中,逻辑值TRUE等于1,逻辑值FALSE等于0。那么我们可以通过对上一步的结果乘以1的运算:
=(C2<>C1)*1

将逻辑值转换为1或0的结果。这样观察与理解可以更加直观感受。

那么此时,我们发现这样一个规律:
每组相同“类别”的首个内容均为数字1,每组相同“类别”的非首个内容均为数字0。


然后我们用MAX函数与上一步结果相加:
=MAX($B$1:B1)+(C2<>C1)*1

MAX函数的参数特点是:
$B$1:B1区域起始位置$B$1加了绝对引用,区域结束位置B1是相对引用,这样下拉填充公式后,当前单元格的返回结果总是它上面的区域中的最大值


我们看一下每一步的运算过程,有助于我们加深理解
B2MAX($B$1:B1)+(C2<>C1)*10+1=1
B3MAX($B$1:B2)+(C3<>C2)*11+0=1
B4→MAX($B$1:B3)+(C4<>C3)*1→1+1=2
B5MAX($B$1:B4)+(C5<>C4)*12+1=3
B6MAX($B$1:B5)+(C6<>C5)*13+0=3
B7MAX($B$1:B6)+(C7<>C6)*13+0=3
B8→MAX($B$1:B7)+(C8<>C7)*1→3+1=4
B9MAX($B$1:B8)+(C9<>C8)*14+1=5
B10MAX($B$1:B9)+(C10<>C9)*15+0=5
B11MAX($B$1:B10)+(C11<>C10)*15+0=5

我们观察到,其实不同类别之间的那个空行间隔所对应的序号(标黄区域),我们是不需要的。假如当我们手动去掉这些序号时,我们就得到了最终想要的效果:相同的类别序号一样,不同的类别之间序号是由1~N顺序递增的。


其实原理很简单,当我们去掉空行所对应的序号时,其实MAX所统计的最大值会失去空行区域的干扰,形成顺序递增特点。

我们继续看一下每一步的运算过程,加深理解

B2→MAX($B$1:B1)+(C2<>C1)*1→0+1=1
B3→MAX($B$1:B2)+(C3<>C2)*1→1+0=1
B4→空→0
B5→MAX($B$1:B4)+(C5<>C4)*1→1+1=2
B6→MAX($B$1:B5)+(C6<>C5)*1→2+0=2
B7→MAX($B$1:B6)+(C7<>C6)*1→2+0=2
B8→空→0
B9→MAX($B$1:B8)+(C9<>C8)*1→2+1=3
B10→MAX($B$1:B9)+(C10<>C9)*1→3+0=3
B11→MAX($B$1:B10)+(C11<>C10)*1→3+0=3


那么我们就可以利用IF函数代替手动去空行序号:
=IF(C2<>"",MAX($B$1:B1)+(C2<>C1)*1,"")

利用IF函数条件判断:
如果C2单元格不等于空值时,我们返回MAX($B$1:B1)+(C2<>C1)*1的原值;如果C2单元格等于空值时,则返回空值即可。


学习Excel,如果你没有天赋,那就一直重复,当你快到本能反应的时候,你的重复就是别人眼中的天赋,冲破捆绑,展翅翱翔。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多