Excel跨多个工作表匹配查找,xlookup束手无措,这个公式牛了

Excel学习世界 2025-03-06 21:54:22

按条件查找公式,常用的是 vlookup、xlookup 或 index+match,但是这些公式的查找区域基本都是在同一个工作表中。

如果查找区域分别在不同的工作表中呢?难度一下子就飙升了。这种情况下就可以用今天的这个公式,轻松搞定跨工作表查找。

案例:

下图 1 至  3 是员工 1 至 3 月的业绩,要求在图 4 的查询表中根据姓名和月份查找出对应的业绩。

效果如下图 5 所示。

解决方案:

先设置下拉菜单。

1. 选中 A2 单元格 --> 选择工具栏的“数据”-->“数据验证”

2. 在弹出的对话框中选择“设置”选项卡 --> 在“允许”区域中选择“序列”--> 选择姓名区域作为“来源”--> 点击“确定”

3. 选中 B2 单元格 --> 选择“数据”-->“数据验证”

4. 在弹出的对话框中与步骤 2 一样设置,在“来源”区域中输入“1月,2月,3月”--> 点击“确定”

接下来就是查询公式了。

5. 在 C2 单元格中输入以下公式:

=FILTER(VSTACK('1月:3月'!C2:C10),(VSTACK('1月:3月'!A2:A10)=查询!A2)*(VSTACK('1月:3月'!B2:B10)=查询!B2))

公式释义:

filter 的作用是基于定义的条件筛选一系列数据;语法为 FILTER(要筛选的区域,布尔值数组,[为空时返回的值]);

VSTACK('1月:3月'!C2:C10):这段公式是 filter 函数的筛选区域,结果为“1月”至“3月”工作表的 C2:C10 区域的合集;vstack 函数的作用是按顺序垂直追加数组;

(VSTACK('1月:3月'!A2:A10)=查询!A2)*(VSTACK('1月:3月'!B2:B10)=查询!B2):

这段看着挺长,其实很简单,整个公式是 filter 函数的筛选条件;

中间用“*”将两个 vstack 函数连接起来,表示 and,即两个条件都要满足;

VSTACK('1月:3月'!A2:A10)=查询!A2:第一个条件,将“1月”至“3月”工作表中的 A2:A10 区域连接后,判断每个单元格是否与“查询”工作表中的 A2 单元格相等;

VSTACK('1月:3月'!B2:B10)=查询!B2:同理,将 3 个月份的 B2:B10 区域连接,判断其中的每个单元格是否等于“查询”工作表中的 B2 单元格;

filter 函数会从合并区域中查找出同时满足上述两个条件的单元格

如果 A、B 列的条件换了,C 列的公式仍然会查找出正确的结果。

0 阅读:11

Excel学习世界

简介:Excel 学习交流