在 Excel 中为每一行数据添加自动编号

注意:本问介绍的方法除了可在 MS Office Excel 中使用,在 WPS 表格以及 LibreOffice Calc 中也可以参考使用。

1 递增编号,从 1 开始

这个非常简单,只需要在编号列中输入公式:

=ROW()-[表头占据的行数]

001.png

比如图中这张表,因为 表头占据了两行,为保证编号是从1开始的,而函数 ROW() 返回的只是当前单元格所在行的行号,因此我们需要在 ROW() 后减去 2。

接下来,双击单元格右下角的控制句柄(那个小黑点),即可完成自动填充:

002.png

2 递增编号,不从 1 开始

如果你的编号需要从其他数字开始,则需要改动一下公式:

=ROW()-[表头占据的行数]+[起始编号数]-1

还是以上面那张表为例,假如我们希望编号从 0 开始,考虑到表头占据了 2 行,则需要我们这样输入:

003.png

输入完毕后,双击控制句柄,完成自动填充,效果如下:

004.png

从其他整数(比如 4)开始,也可以以此类推:

005.png

3 周期往复编号

有时候,我们需要编号周期性重复,比如:

1, 2, 3, 4, 1, 2, 3, 4...

这时候就需要我们使用 MOD() 函数了。编号通式如下:

=MOD(ROW()-[表头占据的行数]-1, [循环周期])+[起始编号]

这样看可能有点复杂。我们举一个例子来进行说明:

表头占 2 行,编号从 1 开始,每 3 个循环一次

  • 表头占 2 行,那么 ROW()-[表头占据的行数]-1 就是 ROW()-2-1,即 ROW()-3
  • 每 3 个循环一次,那么 MOD() 函数的输入参数应该为 MOD(ROW()-3,3)
  • 编号从 1 开始,那么 [起始编号] 就是 1。

综上,公式应为:

=MOD(ROW()-3,3)+1

最终效果如下:

006.png

4 按指定步长递增

比如你希望序号按照一定的间隔递增,如

1, 3, 5, 7, 9...

则可按如下通式:

=(ROW()-[表头占据的行数]-1)*[步长]+[起始编号]

比如这张表,表头占了 2 行。

005.png

如果希望编号从 1 开始,每次递增 3,则需要输入:

=(ROW()-2-1)*3+1

006.png

附:MOD 函数

MOD(X,Y) 函数进行的是取余计算,它的输出结果是参数 X 除以 Y 后的余数。比如:

MOD(10,3)

因为

10 \div 3 = 3 ...... 1

所以上述函数的输出结果就是 1。

1 个赞

啊这……我一般都是手敲几个后直接下拉填充……

这种方法也挺方便的,不过您这种方法,编号是和行绑定的,比如你在 2 号前插入一个新行,

001.png

各行的序号都不会变化:

002.png

但如果用公式:

003.png

中间插入新行后,其余行的编号会自动顺延:

004.png

我还是excel用的少了,长期维护的表格里用公式确实更加方便 :joy:

感觉这些都是AI能很好解决的问题,我遇到过无解的Excel问题就是它不区分大小写。
比如编码 WE001 和 We001 在Excel看来是相同的。

感觉更多的是一种对数理逻辑思维的锻炼吧。其实写这篇文章,个人感觉最好玩的地方是这些公式的推导(不过因为时间不多,正文里我没有详细写推导过程)。锻炼一下逻辑思维能力,一方面将来遇到类似问题时会更灵活地应对,另一方面先对问题有一个大概的思考,对你决定要问 AI 什么、如何提高利用 AI 的效率也是有一定好处的吧。