一旦你要找的关键词像打地鼠一样散落在不同的列,VLOOKUP 立刻变瞎子。就比如下面这个例子,工号分布在A、D、G列,现在要查找工号相对应的姓名:一、传统解法:双重IFERROR + 三重VLOOKUP 套娃:=IFERROR(VLOOKUP(K2,A:C,2,0), IFERROR(VLOOKUP(K2,D:F,2,0), VLOOKUP(K2,G:I,2,0)))
既然VLOOKUP只认“第1列”,那我们就把所有工号都放到第1列,所有姓名都放到第2列,做成一张干净的“标准表”。=VSTACK(A2:C10,D2:F10,G2:I10)
1. 把A2:C10区域(工号A列+姓名B列+...)作为第一个“数据块”三、终极公式:VLOOKUP + VSTACK 天作之合=VLOOKUP(K2,VSTACK(A2:C10,D2:F10,G2:I10),2,0)
- 一次编写,永久生效:区域再多,只需在VSTACK里添加
=XLOOKUP(K2,TOCOL(A2:G10),TOCOL(B2:H10))
四、进阶玩法:HSTACK + TOCOL 横向思维如果你的数据更乱——比如工号在A、D、G列,但不在同一行,该怎么办?这时候可以用 HSTACK + TOCOL 的“降维打击”:=VLOOKUP(K2, HSTACK( TOCOL(A2:H10, 1, TRUE), # 第1步:把所有工号列“压扁”成1列 TOCOL(B2:I10, 1, TRUE)), # 第2步:把所有姓名列“压扁”成1列 2, 0)
=VLOOKUP(K2, HSTACK(TOCOL(A1:J5),TOCOL(A2:J6)), 2,0)
- TOCOL(A1:J5):横向扫描1-5行,生成一列所有工号
2. TOCOL(A2:J6):横向扫描2-6行,同样生成一列所有姓名3. HSTACK(工号列, 姓名列):把两列水平并排,做成标准表1、HSTACK/VSTACK/TOCOL函数需要OFFICE365/2021+,或 WPS2、VLOOKUP本身没“过时”,它只是被设计时的限制框住了。VSTACK和TOCOL这两个新函数,就像给近视的VLOOKUP配了一副智能眼镜,让它能看见全表。- 数据散落在不同列 → 用 TOCOL压扁+HSTACK并排