大家好,今天我们来讲讲vlookup函数的一个嵌套用法。相信90%的人没用过:多区块并排查询。保准让周围同事直接看懵!
数据源A1:F4区域结构特点:多区块水平排列数据源A1:F4区域不是传统的单列表格,而是以“姓名-产量”两列为一组,水平重复排列的。
根据本例来说,共有3组这样的区块:
A-B列(第一组)
C-D列(第二组)
E-F列(第三组)
每组内部第一列是姓名,第二列是对应产量
非标准结构:A1:F4区域类似于多个独立表格并排放置,而非单一连续区域。
例如:第一行标题为“姓名、产量”,重复了3次,数据行中每组姓名与产量是相邻的,但不同组之间没有直接关联。
我们想要通过H列已知的条件“姓名”,在数据源A1:F4中,查询到对应的产量数据,显示在I列。
这种布局虽然有一定特殊的美化作用,但增加了查询难度,因为VLOOKUP通常需要连续的关键字列和结果列。
小编给出的方案是:
利用VLOOKUP函数结合TOCOL和WRAPROWS函数,实现从非连续、多区块数据源中查询指定姓名对应产量的功能。
方法不论优劣,思路不辨难易,重要是找到自己知识储备范围内最舒服的解题方式。
公式通过动态数组函数先将分散的数据整合为一个标准的二维查找表(第一列姓名、第二列产量),然后VLOOKUP在这个新表中进行精确匹配查询,最终将结果返回至I列。这体现了Excel新型函数处理复杂数据布局的能力,无需手动重组数据即可直接查询。
首先使用TOCOL函数:
=TOCOL(A2:F4)
TOCOL函数将A2:F4区域按行优先顺序展平为一个单列数组。这意味着它会先读取第一行的所有单元格(从左到右),然后第二行...... 以此类推。
得到一个18行*1列的单列数组,包含了所有姓名和产量值。
TOCOL函数转换后的单列数组中,姓名与产量值呈现严格的交替排列规律。
固定配对顺序:
始终按照"姓名→产量→姓名→产量…"的规律交替出现。
保持原始对应关系:
每个姓名后面紧跟的就是其对应的产量值,保持了原始数据中的配对关系。
跨区块连续排列:
打破了原始3个区块(A-B列、C-D列、E-F列)的界限,将所有18个值按行优先顺序串联成一列。
这种交替排列的模式正好为后续WRAPROWS函数重组成标准的二维查询表:每行包含一对完整的"姓名-产量"记录创造了前提条件。
继续嵌套使用WRAPROWS函数:
=WRAPROWS(TOCOL(A2:F4),2)
WRAPROWS函数将单列数组按照行优先的输出顺序转换为指定列数的二维数组。
WRAPROWS函数将上一步得到的单列数组按指定列数,本例特指2列,重新转换成一个多行两列的二维数组。每行包含两个元素:
第1列是姓名,第2列是产量。
行优先具体转换过程:
第1行: "陈默", 500
第2行: "周昊", 650
第3行: "林薇", 300
第4行: "王铮", 600
第5行: "吴越", 900
第6行: "苏晴", 600
第7行: "李睿", 700
第8行: "郑轩", 850
第9行: "叶珊", 250
单列数组有18个元素,指定每行2列,因此会生成一个9行×2列的数组(18÷2=9行)。
转换顺序:从单列数组的第一个元素开始,依次填充新数组的第一列和第二列。每行形成一对“姓名-产量”。
最后得到一个标准的查找表,第一列是姓名(关键字列),第二列是产量(结果列)。这相当于将原始数据中分散的3个区块(A:B列、C:D列、E:F列)合并成了一个连续的表。
最后嵌套使用VLOOKUP函数:
=VLOOKUP(H2:H4,WRAPROWS(TOCOL(A2:F4),2),2,0)
查找值:H2:H4是一个数组,包含3个要查找的姓名。
查询表:由WRAPROWS生成的9行*2列数组。
列索引:2表示返回查找表中的第2列(产量)。
匹配类型:0表示精确匹配。
VLOOKUP函数在第二步生成的查找表中,根据H2:H4中的姓名进行精确匹配查询,并返回第2列对应的产量值。
尽管VLOOKUP本身是单条件查询函数,但通过函数组合模拟了“多区域查询”效果。它解决了数据源碎片化的问题,无需使用多个VLOOKUP或合并区域,直接实现一次性查询。查询类型属于数组公式驱动的精确匹配查询,利用动态数组特性自动溢出结果到I2:I4。
本站是社保查询公益性网站链接,数据来自各地人力资源和社会保障局,具体内容以官网为准。
定期更新查询链接数据 苏ICP备17010502号-11