2020年5月8日星期五

Excel 中标记序号的技巧 | 实用技巧

如果你在工作中需要接触各类表格,那么就会知道,在 Excel 表格中标记序号是很常见的一个需求。比如说,像这样的签到表,往往就会列出具体的序号在表格当中。
签到表中的序号
当然,签到表的序号非常简单,在实际的工作场景中,我们还会遇到许多其它的场景,要给表格加上序号。这篇文章,我们就围绕标记序号这件事情,来展开说一说各个相关的小技巧。

从需求和场景说起

在谈具体的技巧之前,我们先来说说,哪些场景下,需要给表格加上序号。

1. 打印出来的纸张

最直接的场景,就是这个表格需要打印出来供人观看或填写,这时候有序号就会方便很多。
无论是前面提到的签到表,还是名单表等等,由于打印出来的纸张,脱离了 Excel 中的行标和列标,这时候往往需要人为补上一列序号,方便在打印出来的纸张中定位行数。这样,签到表可以很快速地统计出有多少人签到了;名单表有了序号,人们在交流时可以方便地互报行数来定位……

2. 了解表格中的数据量

在表格中,我们往往会需要关心一共有多少行数据。如果这个表格没有任何的表头,那么数据量就等于 Excel 提供的行标。
不过,很多时候一个表格往往会有数行的表头,来展示表格的名称、每列的标题、备注说明等信息。这时候 Excel 的行标就并不能真实地反映数据量了。
如果自己去算,需要记住表头占了几行,再用 Excel 的末尾行标减去,未免显得不够直观。这时候加上一列序号,可以方便地一眼就知道当前表格的数据量。

3. 多人间的表格协作

尽管 Excel 提供了相关的协作功能,但在实际的工作时,还是经常免不了互传 Excel 协作的情况。对方如果在表格中间增删了数据,要找出来这几行就相对比较麻烦。这时候如果人为地给表格加上序号,就能很方便地定位到有增删行的地方了。
另外,有时候在工作中,还会出现这样的协作情景:把一个大表格拆分成数个小表格,分配到不同的人进行处理,最终再统一汇总。前段时间我就有一个工作,需要把一张大表拆分成近 40 张小表格,这时候加上序号,无论是追踪数据的处理,还是最终汇总回一张大表格,都能起到不小的帮助。

静态序号的处理技巧

说完了需求和场景,接下来就进入正题,来说一说 Excel 中序号相关的技巧。主要会分成两个部分:静态序号和动态序号。这两者有什么区别呢?其实很好理解,静态序号就是一旦生成,就不会再发生变动了。例如一个签到表的序号,是不会发生改变的。而动态序号则会随着表格的增删、筛选等,序号也会随着动态地发生变化。
和《玩转 Excel 中的合并单元格》中一样,以上次的示例表格为模板,后续部分技巧的示例,也可以下载这个示例文档:
这一节我们就先来说说静态序号的处理。
对许多人来说,在 Excel 中最熟悉的序号小技巧,就是在头几行输入几个数字后,选中它们,然后双击右下角的小加号,序号就会自动生成。不过,这个小技巧是有先决条件的:要填充序号的那一列,其相邻列必须是有数据的,否则双击不会自动填充。而且填充的行数,默认是和相邻列有内容的行数是一致的。
双击填充序号
那除了这个人人皆知的双击小技巧之外,接下来我们就说几个额外的,这些小技巧有些可能看似微不足道,但能提升我们的操作效率;有些则能应对特定场景下的生成序号的需求。

能省一步是一步:学会使用 Ctrl 键

比如说我们现在需要制作一个 30 人的签到表,需要生成 1–30 的序号。这个事情其实并不复杂,类似的使用场景也很多。只要稍微会一点 Excel,基本会这样操作:
第一行输入 1 → 第二行输入 2 → 选中 1 和 2 → 下拉右下角的小加号,直到序号 30
之所以要输入 1 和 2 两个数字,是因为如果只输入 1,然后直接下拉右上角的小加号,Excel 默认会重复 1 这个数字,而不是生成序号。其实,只需要一个快捷键 Ctrl(macOS 则是 Option 键),就可以大大简化这个步骤,变成:
第一行输入 1 → 按住 Ctrl 键下拉右下角的小加号,直到序号 30
当只有一个数字时,按住 Ctrl 键,会使 Excel 变为生成序号。相对应的,如果你分两行输入了 1 和 2,这时候再按住 Ctrl 键下拉右下角的小加号,则会让 Excel 循环生成 1 和 2 这两个数字。
可见,Ctrl 键在这里起到的作用,实际上是让 Excel 的默认行为反过来
  • 单个数字下拉,默认重复该数字,按住 Ctrl 键则变成填充序号;
  • 多个数字下拉,默认生成序列,按住 Ctrl 键则变成重复数字;
当然,这并不是唯一的路径。直接下拉单个数字 1 生成重复的多个 1 之后,也可以点选悬浮的选项按钮,切换为「填充系列」,也可以生成序号。不过,这些方法始终不如掌握使用 Ctrl 键来得简单快捷。
在悬浮按钮中选择「填充系列」

大批量生成序号:使用「系列」功能

刚刚 30 人的签到表只是小菜一碟,无论哪种方法都能搞定。不过,假设现在人数更多一些,例如制作一场有 500 人参加的婚礼签到表呢?
这种表的特点在于,序号先于内容产生。其实如果有内容就好办了,无非就是双击一下的事情,Excel 就自己把序号都填充好了。但如果我们要在没有内容的时候,预先定义好序号,用不了双击大法,难道只能靠自己手动下拉来填充吗?
数据量少的时候还好,而一旦要下拉填充的行数多了,不仅仅是拖得麻烦的问题。从 1 拖到 500 行,尤其是序号快填充到接近最大值时,由于滚动得越来越快,这时候需要精确地操控鼠标,渐渐慢下来,最终序号要不超出了一些,要不还没到最大值,总之都需要再次人工编辑修正。
其实,Excel 提供了一个名为「系列」的功能,不需要手工下拉拖动,就能快速地批量生成序号。你可以在菜单的「编辑 - 填充 - 系列」中找到这个功能。乍一看这个名字有点奇怪,其实主要是翻译得比较生硬,对应的英文名称实际是「Series」,翻译成序列可能会更好一些。
Excel 中的「系列…」功能
在实际使用中,只需要按照这个步骤操作:
  1. 在起始单元格中输入初始序号,如数字 1;
  2. 打开「系列…」功能,在默认选项的基础上,调整为「系列产生在:列」,并填写「终止值」,如 500;
  3. 最终确定后,相应的序号就生成了;
使用「系列…」功能生成序号 1–500
其实,除了批量生成大量的序号外,如果你仔细看一看「系列…」功能的选项,还会发现这个功能还有许多其它的用途。例如,调整「步长值」可以生成等差数列;调整「类型」可以生成等比数列;最方便的是,如果你想批量填充每一列的序号,要知道,在 Excel 中即使有内容存在的情况下,双击填充也只能向下面的行填充,而不能向右侧的序填充,这时候用「系列」功能,只需要选择为「系列产生在:行」就可以了。

合并单元格后填充序号

在《玩转 Excel 中的合并单元格》一文中,我们介绍了各种和单元格合并的小技巧。不过,合并后的单元格,如果想给他们标上序号,会发现不那么顺利。例如,当我们想给示例文件中的营业网点加上序号时,无论是双击填充、手动下拉,还是刚刚介绍的「系列」功能,都没法用了,Excel 会提示「若要执行此操作,所有合并单元格需大小相同」。
合并单元格后,无法使用常规方法标记序号
这时候怎么办呢?难道只有一个一个手动填写序号吗?这时候,可以利用函数 + 批量填充的组合技来帮忙。这个组合技是这样的:
  1. 选中所有合并的单元格;
  2. 在第一个单元格内,如下图中,输入 = MAX($A$2:A2)+1
  3. 按下 Ctrl-Enter(macOS 中是 ⌘Command-Enter),批量填充所有单元格;
为合并单元格批量填充序号
这个组合技的原理,其实思路非常简单。由于序号是自增的,我们只要保证每一个合并单元格的序号,都比上一个合并格子中的 +1,然后使用 Ctrl-Enter 组合键,批量填充就可以了
可以看一下这个 Max 函数是如何发挥作用的,它的功能是找出指定区域内,最大的那个数值。当在第一个合并单元格填入 = MAX($A$2:A2)+1,由于 A2 中是文本,这时候最大的数值是 0,所以我们人为 +1,得到 A3:A7 合并区域中的第一个序号:1。接下来,使用批量 Ctrl-Enter 批量填充后,在第二个合并单元格 A8:A11 中,Excel 会默认生成公式 = MAX($A$2:A7)+1,而此时 A2:A7 区域的最大值是 1,再这个基础上再增加 1,就得到了第二个序号。以此往复,最终就快速地把所有合并单元格中的序号生成了。

自定义序列

如果你是公司的行政,肯定遇到过这样的场景:全公司团建活动时,要给每个员工分组。为了增加部门之间的接触,一般会把同部门的人拆散到不同的组当中。
这时候,一般会拿出员工名册,然后给每个人重复序号,例如分成五个队的话,就重复生成 1–5 的序号,同个数字的人分为一组。在 Excel 中想要重复生成某段序号,其实靠前面提到的按住 Ctrl 键下拉,或者借用函数,都可以实现。但是,有没有更好的办法呢?
其实,这时候可以用到 Excel 提供的「自定义序列」功能。在设置中找到这个选项,你可以自定义五个队的名字,如「红队、蓝队、绿队、黄队、紫队」。
在 Excel 的选项设置中,找到「自定义序列」功能
这个时候,你只需要在第一个单元格中输入红队,然后直接双击填充,Excel 就会按照这个自定义序列,如下图所示,按照「红队、蓝队、绿队、黄队、紫队」来重复生成了。
使用自定义序列快速生成分组

动态序号的处理技巧

说完了这几个静态序号的处理技巧,接下来就到了动态序号。当表格的内容没有最终确定时,可能会发生增删行的情况,这时候,如果是静态的序号,删去一行,中间就会跳过一个数字;增加一行,中间就会空着一行没有数字。然而,表格如果使用动态序号,这些问题就不复存在了,随着行数的增删,序号也会自动更新。

使用 ROW() 函数和表中表

要实现动态序号,最简单的就是使用 Row 函数。Row 函数的作用非常简单,它会返回你引用单元格所在的行标。而如果你将函数的参数略去,那么 = ROW() 会直接返回该单元格所在的行标。 
Row 函数返回引用单元格的行标
因此,如下图所示,我们想要动态序号的话,只需要使用 ROW 函数填充第一列就可以。由于 A3 这个格子,实际对应的序号是 1,因此,只需要用公式 Row()-2,并双击填充就可以了。这时,当你再删去一行时,序号会自动更新成连贯的。不过,当新增一行时,多出来的那一行序号是空着的,有没有办法,也能让它自动填上,从而一步到位呢?
使用 ROW 函数动态填充序号
要做到这一点并不难,只需要建立一个「表中表」,即选中当前内容区域,从菜单「插入 - 表格」中来创建表。
在「插入 - 表格」中创建表
表中表的概念可能会让许多人感到疑惑,因为 Excel 本身不就是一个表格了吗?为什么又把当前内容再插入了一个表格呢?如果使用过 macOS 中的 Numbers,可能就会对这个概念好理解一些。在 Numbers 当中,一个 Sheet 中,可以插入多个表格(Table),由于 Numbers 的界面展现形式,不像 Excel 默认铺满了所有的位置,表格之间还可以随意拖动叠加。
Numbers 当中一个 Sheet 插入多个表格
Excel 中的表中表,虽然和 Numbers 的表中表不尽相同,但也是类似的概念。实际上,Excel 中的「表中表」,也是一个宝藏功能,改天可以另起一篇文章单独来谈。但简单来说,在 Excel 中创建了表中表后,这块表格区域在新增行时,会自动在新的一行中,保留上下行中的公式。
这样一来,从下图中你可以很直观地对比看到,在原有表格中,新增一行时,插入的是空白行。而在表中表区域中新建一行时,序号那一列会保留 ROW 函数的公式,因此序号就已经自动标上了。
表中表区域中新建一行时,会自动填充上序号

在筛选后保持序号不乱:AGGREGATE 函数

在许多情况下,我们会需要将一张大表经过筛选过,多次打印。例如,全年级的成绩 Excel 表,对于教务主任来说,可能希望一次性全量打印,并显示全年级成绩排名的序号。而同样一张大表,可能还需要分班级筛选后,打印每个班级的成绩情况。自然,我们希望每次筛选后,如果序号能实时地随着筛选内容而更新,就不需要人工再去处理序号了。
但在默认情况下,即使运用了 ROW 函数,只要表格一经筛选,序号就如下图一般,割裂了。
筛选后,序号就割裂了
有没有办法,能在筛选后,让序号随着筛选出的内容一起更新呢?这时候就要用到 AGGREGATE 函数了。这个函数非常强大而又独特,它有点像一个函数的函数,其基本参数是这样的:
= AGGREGATE(计算函数, 忽略值, 数据区域)
它的强大之处在于,「计算函数」中,你可以指定一种函数,如是计算平均值,还是计数,或返回最大值等等。而独特之处在于其「忽略值」,它是 Excel 所有函数中,少数几个可以仅对当前没有被隐藏的数据进行运算的函数。这里限于篇幅,想要了解更多的话,可以参见 Office 的官方帮助文档
在实际使用中,只需要在 A3 单元格内,输入 = AGGREGATE(4,5,$A$2:A2)+1,并向下填充就可以了。我们来理解一下:
  • 4:参见帮助文档,其对应的计算函数是 Max(),即返回指定数据区域内的最大值;
  • 5:表示忽略隐藏行内的数据;
  • $A$2:A2:指定的数据区域,随着下拉填充区域不断扩大;
不难理解,它运作的原理,和前文中合并单元格序号技巧一样,都是利用了 Max 函数,使下一行基于上一行的基础上,增加 1。所以这个 AGGREGATE 的公式,长得和合并单元格序号技巧的公式 = MAX($A$2:A2)+1,两者非常像。唯一的区别在于,AGGREGATE 函数可以选择忽略值,这里的参数 5 代表着会忽略掉隐藏行。这样,当筛选过后,隐藏行的序号,就不在 Max 函数的自增范围内了。
使用了 AGGREGATE 函数后,如下图所示,你可以随意地筛选表格,序号会随着筛选动态更新。
筛选后序号会自动更新
以上,就是关于 Excel 序号的相关小技巧。希望你在实际运用中,能够灵活地举一返三。如果还有实际场景中遇到的在 Excel 中标记序号的问题,也不妨在评论中留言来交流讨论。
5
从需求和场景说起
静态序号的处理技巧
动态序号的处理技巧
#Office#技巧

 116

没有评论:

发表评论