夜雨聆风学习资料网

ARTICLE · 1071492

3,000行Excel里找10个人 XLOOKUP 还是 FILTER

3,000行Excel里找10个人 XLOOKUP 还是 FILTER

#Excel实战 #职场真实案例

3,000行Excel里找10个人,你还在一个一个搜?

老板甩给你一串名单,别再 Ctrl+F 一个个找了。

正当,春和景明,波澜不惊,老板突然给你发来一串名字:

张伟陈静刘洋王磊李敏……

然后说:

“帮我把这10个人的资料找出来。”

你打开员工表。3,000多行。里面有:

(贵公司好big)

工号
姓名
部门
城市
工资
E001
张伟
销售部
上海
8,500
E002
李娜
财务部
苏州
9,200
E003
王强
销售部
杭州
7,800
E004
陈静
市场部
南京
8,800
……
……
……
……
……

怎么办?

很多人的第一反应可能是:

Ctrl + F

输入:

张伟

找到、复制、再搜:

陈静

再复制 x 10;10个人好像也不是不能干。

但是如果老板给你的不是10个人,而是:

50个人呢?

我们先思考0.5秒,用 XOOKUP 还是 FILTER 。。。

01|先别一个一个搜

假设完整的员工资料放在:

A2:E3001

我们把老板给你的10个人名单放在:

G2:G11 (当然也可以放在一个新的表里A2:A11)

如下:

G列
张伟
陈静
刘洋
王磊
李敏
赵磊
周敏
吴涛
徐丽
孙强

如果你会XLOOKUP,可能会在旁边输入:

=XLOOKUP(G2,B2:B3001,A2:E3001)

Excel的运算逻辑是什么?

Excel拿:

G2里的“张伟”

去:

B2:B3001的姓名列

寻找。

找到以后,把这个人的:

工号 + 姓名 + 部门 + 城市 + 工资

一次全部返回。

这里其实就是我们之前讲过的:

XLOOKUP多列溢出。

所以输入一个公式以后:

工号
姓名
部门
城市
工资
E001
张伟
销售部
上海
8,500

5列一起出来。但是,这还只是:

查一个人。

02|10个人,还需要把公式拖10次吗?

其实不用。

这里有一个很多人可能没用过的XLOOKUP玩法。

我们把:G2

改成:G2:G11

整个公式变成:

=XLOOKUP(G2:G11,B2:B3001,A2:E3001)

注意发生了什么。

现在我们告诉Excel:

帮我找G2:G11这10个人。

按下 Enter。结果:

10个人 × 5列资料,一次全部出来。

甚至老板明天给你:

100个人

逻辑也是一样。

03|为什么一个公式能出来这么多结果?

这里稍微讲一点原理。

很多人理解Excel公式,还是:

一个公式 → 一个答案

但新版Excel已经不完全是这样了。

比如:

=XLOOKUP(G2:G11,B2:B3001,A2:E3001)

这里一次给XLOOKUP:

10个查找值

而每找到一个人,又要求它返回:

5列资料

于是最终结果自然就是:

10行 × 5列

Excel会自动把结果铺到周围单元格。

这就是:动态数组

你不用记这个名字也没关系。只需要记住一个变化:

一个公式,不一定只能返回一个结果。

这也是Microsoft 365版Excel和很多人印象里的老Excel很不一样的地方。

04|等等,老板又改需求了

刚做完。老板走过来说:

“算了,不要这10个人了。”

然后补了一句:

“把销售部所有人的资料给我。”

这时候怎么办?我们还能用 XLOOKUP 吗?

当然可以想办法。

因为刚才的问题是:

我知道要找谁。

张伟、陈静、刘洋……

现在的问题变成:

我不知道具体是谁。

我只知道一个条件:

销售部

这时候就应该换工具。

05|FILTER该上场了

输入:

=FILTER(A2:E3001,C2:C3001="销售部")

告诉Excel:

从A2:E3001这张员工表里,

把:

C列等于“销售部”

的所有记录筛出来。

Enter。

如果销售部有183个人:

183个人全部自动出来。

不是第一条,不是最后一条。

而是:

所有符合条件的记录。

06|这就是XLOOKUP和FILTER一个很重要的区别

很多人学习Excel时容易陷入一个习惯:

学会一个函数,就什么问题都想用它解决。

比如学会XLOOKUP以后:

什么都XLOOKUP。

其实没有必要。你可以这样理解。

情况一

老板说:

“帮我查一下张伟。”

你知道具体找谁。用:

=XLOOKUP(G2,B2:B3001,A2:E3001)


情况二

老板给你:

10个人的名单。

你仍然知道具体找谁,只不过一次找很多人。 用:

=XLOOKUP(G2:G11,B2:B3001,A2:E3001)


情况三

老板说:

“把销售部的人全部找出来。”

你不知道具体姓名。只知道条件。用:

=FILTER(A2:E3001,C2:C3001="销售部")

所以关键不是:

XLOOKUP厉害还是FILTER厉害?

而是:

你现在到底在解决什么问题?

07|再加一个条件呢?

老板继续说:

“销售部太多人了,只要上海的。”

(既要又要也要型老板登场)

现在有两个条件:

部门 = 销售部城市 = 上海

FILTER同样可以做。

=FILTER(A2:E3001,

        (C2:C3001="销售部")*

        (D2:D3001="上海")

        )

这里的:*

你可以简单理解成:

而且

所以:销售部 * 上海

就是:

既属于销售部,而且在上海。

结果:Excel返回同时满足两个条件的人。

08|甚至可以把条件放进单元格

如果每次都在公式里写:"销售部"

其实还不够方便。我们可以在单元格输入:

G2 = 销售部H2 = 上海

然后公式改成:

=FILTER(

        A2:E3001,

        (C2:C3001=G2)*

        (D2:D3001=H2)

        )

以后想看:

财务部 + 苏州

只需要修改:

G2 → 财务部H2 → 苏州

结果马上变化。

公式:

一个字都不用改。

这时候它已经有一点像:

一个迷你查询工具。

09|今天真正想讲的不是两个函数

如果只记公式,这篇文章很快就忘了。

我更希望你记住下面这个判断方法:

知道“找谁” → XLOOKUP

知道“一批人是谁” → XLOOKUP + 动态数组

不知道具体是谁,只知道“条件” → FILTER

下次老板再丢给你3000行Excel时,先问自己一句:

我到底是在“找一个东西”,还是“筛一批东西”?

问题判断对了,函数往往就已经选对一半了。

10|最后再留一个真正工作中很容易踩的坑

假设名单里有:

张伟

但是员工表里有两个张伟。

那么:

=XLOOKUP(...)

会怎么样?它通常只会返回:

第一个找到的张伟。

这时候如果你真正想要的是:

把两个张伟都找出来

XLOOKUP就不再是最合适的选择。

FILTER反而更合适:

=FILTER(A2:E3001,B2:B3001=G2)

两个张伟:

两条全部返回。

这正好也呼应我们之前讨论过的XLOOKUP局限:

不是函数越高级越好,而是工具要选对。

大家可以免费下载这个文件作练习哦

通过网盘分享的文件:3000行找10个人_XLOOKUP_FILTER练习模板.xlsx

链接: https://pan.baidu.com/s/1PKBhdSSeNehy5NcHXpR1tg?pwd=ux19 提取码: ux19

#Excel技巧#Excel函数#Excel教程#Excel公式#办公技巧#文员必备#上班族必备#办公效率#XLOOKUP#Excel职场实战

相关学习资料