今天的这个案例,公式本身不难,但是思路奇巧,脑洞开得有点大。


看完案例,很多人会不禁感叹:原来 vlookup 函数还能这么玩!


案例:


下图 1 为“班级”、“人数”对照表,现在需要在同一列中,根据人数重复显示班级名,比如一班有 5 个人,就重复显示 5 行“一班”,然后再按人数重复显示“二班”,以此类推。效果如下图 2 所示。


单元格颜色只是为了方便大家核对个数而后期添加,本身并无意义。


解决方案:


1. 在“班级”列前面新增一列辅助列 --> 在 A2 单元格中输入以下公式:

=SUM($C$2:C2)


* 请注意参数的绝对和相对引用


2. 向下拖动复制公式


3. 在 E2 单元格中输入以下公式:

=IFERROR(VLOOKUP(ROW(A1),A:B,2,0),E3)


公式释义:

  • VLOOKUP(ROW(A1),A:B,2,0):
    • 以依次递增的行值,即 1、2、3、4…… 作为要查找的值,查找 B 列对应的班级名
    • 以“一班”为例,它前面辅助列的数字为 5,所以拖动 1 至 4 行都是查找不到的,直至第 5 行,即行值为 5 的时候,才会查找到“一班”
  • =IFERROR(...,E3):
    • 如果查找不到,那么就等于下一行单元格的值
    • 仍以“一班”为例,向下拖动直至第 4 行的时候,仍然找不到 B 列的班级名,所以 1 至 4 行的结果目前都为 0
    • 当拖动到第 5 行时,查找到“一班”,此时,第 4 行的值因为等于第 5 行的值,也变成了“一班”;同理,1 至 3 行的值也相应全都变成了“一班”


4. 向下拖动复制公式,直至出现“0”值,表示所有重复显示都已经执行完毕。


5. 可以手工删除值为“0”的单元格区域,如果不想每次都手工删除公式,也可以在公式后面添加“&""”,就能自动不显示“0”值:

=IFERROR(VLOOKUP(ROW(A1),A:B,2,0),E3)&""


公式释义:

  • &"":老读者应该都知道,万金油公式中经常会用到“&""”,其作用是把数值转换为文本,这样“0”就不会显示出来了


有关万金油公式,我在不少案例中都使用并且详细讲解过,如果需要学习了解的话,可以参阅

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点。

现在终于有了,以下专栏,从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手。