关于在对一列数据隔行插入空行,我分别写过
Excel 实用 tips(三)– 如何隔行插入空行?和
Excel VBA(5) – 一键制作工资条
两篇文章中分别介绍了三种方法:
- 排序法
- 按空格插空行法
- VBA
可是还有同学说:这几种方法我都不喜欢,我是函数控,有没有函数实现的方法?
有!今天介绍用 index+match 实现的方法。大家不禁要问了,index+match 不是用来查找的吗?没错,具体案例可参见 Excel 如何多条件查询?即同时查询行、列并返回值?
稍作变通,就能实现隔行插入空行的目的。
案例:
如何给下图 1 隔行插入空行,变成下图 2?


解决方案:
1. 先在 B 列增加一个辅助列,公式为:=row(),目的是读出当前行数

2. 接着我们来找一下规律:
- 如下图所示,如果隔行插入空行,就相当于 1 行写入 1 行,2 行写入 3 行,3 行写入 5 行……
- 发现规律了吗?目标行=原始行*2-1
- 反推一下公式,得出结论:原始行=(目标行+1)/2
- 先记住这个结论,等下公式中会用到

3. 既然找出了规律,就可以写公式了,把多余的演示删除,在 C1 单元格输入以下公式,下拉:
=INDEX(A:A,MATCH((ROW()+1)/2,B:B,0))

公式释义:
- (ROW()+1)/2:这就是我们在上一步找出的规律,row() 是当前行,即目标行;(ROW()+1)/2 就是 (目标行+1)/2,即原始行
- MATCH((ROW()+1)/2,B:B,0):这一步的目的是返回原始行的行数
- 然后根据返回的行数,用 index 函数在 A 列中取出对应的人名
4. 但是我们要的是插入空行,不是出错值,那可以在整个公式外面加上 iferror(公式,"") 即可:
=IFERROR(INDEX(A:A,MATCH((ROW()+1)/2,B:B,0)),"")

5. 接下来把整个 C 列复制 --> 粘贴为数值到 D 列,公式就变成了人名



6. 再按需设置一下字体格式就完成了
