在Excel数据处理中,查找数据是一项基础又关键的操作。然而,实际工作中常常会遇到各种复杂的查找需求,如多条件查找、合并单元格查找、一对多查找等。今天,我们就来深入探讨Excel中使用Vlookup函数应用于不同类型的查找技巧,让你轻松应对各种数据查找难题。

一、多条件查找

示例:根据部门和姓名查工资,公式为 =VLOOKUP(E2&F2,IF({1,0},A2:A8&B2:B8,C2:C8),2,0)。

原理剖析

  • 首先,E2&F2 将部门(E2 单元格)和姓名(F2 单元格)连接成一个文本字符串,作为要查找的值。
  • IF({1,0},A2:A8&B2:B8,C2:C8) 这部分,IF({1,0} 是一个构建数组的技巧。{1,0} 是一个数组常量,IF 函数根据这个数组,将 A2:A8 和 B2:B8 连接后的结果放在数组的第一列,将 C2:C8(工资列)放在数组的第二列,形成一个新的 8 行 2 列的数组。
  • 最后,VLOOKUP 函数在这个新数组中查找 E2&F2 对应的工资值,2 表示返回数组的第二列(即工资列)的值,0 表示精确查找。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

二、合并单元格查找

示例 1:查找所在部门的奖金

公式为 =VLOOKUP(VLOOKUP("座",D$2:D2,1),A:B,2,0)。

原理剖析:VLOOKUP("座",D$2:D2,1) 会在 D$2:D2 区域中查找文本 “座”(这里 “座” 可理解为一个占位符,实际可根据数据特点选择合适的查找值),返回该区域截止本行的最后一个非空值,即当前行所在部门。然后外层的 VLOOKUP 函数再根据这个部门值在 A:B 区域中查找对应的奖金值。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

示例 2:根据公司、产品查找对应价格

公式为 =VLOOKUP(F2,OFFSET(B$1,MATCH(E2,A:A,)-1,):C99,2,0)。

原理剖析:MATCH(E2,A:A,) 用于查找公司名称(E2 单元格)在 A 列中的行数,然后 OFFSET(B$1,MATCH(E2,A:A,)-1,) 以 B1 单元格为基点,向下偏移到公司名称所在行的位置,与 C99 一起构成一个动态的查找区域。最后 VLOOKUP 函数在这个区域中查找产品(F2 单元格)对应的价格。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

三、一对多查找

示例:查找出人事部所有员工

数组公式 {=VLOOKUP(E$2&ROW(A1),IF({1,0},A$2:A$8&COUNTIF(INDIRECT("a2:a"&ROW($2:$8)),E$2),B$2:B$8),2,0)}(输入完成后按 Ctrl shift enter 结束,自动添加大括号)。

原理剖析

  1. ROW($2:$8) 生成一个包含 2,3,4,5,6,7,8 的数组。
  2. INDIRECT("a2:a"&ROW($2:$8)) 根据 ROW 函数生成的数组,依次生成 a2:a2、a2:a3 等 7 个区域。
  3. COUNTIF(INDIRECT("a2:a"&ROW($2:$8)),E$2) 在这 7 个区域中分别计算部门(E$2,这里假设为 “人事部”)的个数,相当于给人事部的员工生成编号。
  4. IF({1,0},A$2:A$8&COUNTIF(INDIRECT("a2:a"&ROW($2:$8)),E$2),B$2:B$8) 将带编号的部门和 B 列(员工信息列)构成一个新的 7 行 2 列的数组。
  5. 最后 VLOOKUP 函数通过 E$2&ROW(A1)(ROW(A1) 随着公式向下填充逐渐变化,用于依次查找每个员工)在新数组中查找人事部的员工信息。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

四、查找所有值放在一个单元格

示例:在 G 列设置公式,根据 F 列产品从左表中查找所有符合条件的价格并用逗号隔开。

公式 E2=D2&","&IFERROR(VLOOKUP(C2,C3:E$12,3,),"") 和 G2=VLOOKUP(F2,C:E,3,)。

原理剖析:通过循环使用 VLOOKUP 函数和 IFERROR 函数,在 C3:E$12 区域中查找符合条件的价格,将找到的价格用逗号连接起来存放在 E 列,G 列则根据 F 列产品进行常规的 VLOOKUP 查找。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

五、查找最后一个

示例:查找 A 产品最后一次进货价格

公式为 =VLOOKUP(1,IF({100,0},0/(B2:B10="A"),C2:C10),2)。

原理剖析:0/(B2:B10="A") 将 B2:B10 中等于 “A” 的单元格对应的位置变成 0,不符合条件的变成错误值。IF({100,0},0/(B2:B10="A"),C2:C10) 构建一个新数组,将 0 或错误值放在第一列,将进货价格(C2:C10)放在第二列。VLOOKUP 函数最后一个参数省略时进行二分法查找,用 1(这里只要是非 0 数字都可以)查找,找到最后一个符合条件(即 B 列等于 “A”)的价格。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

六、跨多表查找

方法 1:公式 =IFERROR(VLOOKUP(A2,服务!A:G,7,0),IFERROR(VLOOKUP(A2,人事!A:G,7,0),IFERROR(VLOOKUP(A2,综合!A:G,7,0),IFERROR(VLOOKUP(A2,财务!A:G,7,0),IFERROR(VLOOKUP(A2,销售!A:G,7,0),"无此人信息")))))。

原理剖析:依次在不同工作表(服务、人事、综合、财务、销售)的 A:G 区域中查找 A2 单元格对应的员工基本工资,若在一个工作表中未找到则继续在下一个工作表中查找,直到找到或返回 “无此人信息”。

方法 2:公式 =VLOOKUP(A2,INDIRECT(LOOKUP(1,0/COUNTIF(INDIRECT({"销售";"服务";"人事";"综合";"财务"}&"!a:a"),A2),{"销售";"服务";"人事";"综合";"财务"})&"!a:g"),7,0)。

原理剖析:COUNTIF(INDIRECT({"销售";"服务";"人事";"综合";"财务"}&"!a:a"),A2) 在各个工作表的 A 列中统计 A2 单元格(员工姓名)的个数,LOOKUP(1,0/COUNTIF(INDIRECT({"销售";"服务";"人事";"综合";"财务"}&"!a:a"),A2),{"销售";"服务";"人事";"综合";"财务"}) 找到员工所在的工作表名称,INDIRECT 函数根据工作表名称构建查找区域,最后 VLOOKUP 函数在该区域中查找员工的基本工资。

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

Vlookup函数的高级用法,多场景下Excel查找技巧-趣帮office教程网

掌握了这些Excel查找技巧,无论是面对简单还是复杂的数据查找任务,都能游刃有余,大大提高数据处理的效率和准确性。赶紧在实际工作中运用起来吧!