这谁想得到,这两个Excel转置函数竟然比专业的查找公式还好用

Excel学习世界 2024-11-29 13:09:37

多条件查找、一对多查找,都是挺常见的查找需求,除了大家常用的那些公式,我要安利两个你们意想不到的函数,光看其功能,是无论如何想不到要用它们做查找的。

案例 1:

提取出下图 1 中 E、F 列的条件,从左侧的数据表中匹配出对应的数量,效果如下图 2 所示。

解决方案 1:

当然是最传统的 vlookup 或 xlookup 函数啦。

在 G2 单元格中输入以下公式:

=XLOOKUP(E2&F2,A2:A21&B2:B21,C2:C21)

公式释义:

E2&F2:将 E2 和 F2 单元格连接起来,作为查找项;

A2:A21&B2:B21:将两个区域连接起来,作为被查找区域;

XLOOKUP(...,...,C2:C21):在上述区域中查找出符合条件的行,返回对应的 C 列值

解决方案 2:

依然是经典的组合查找公式。

输入以下公式:

=INDEX(C2:C21,MATCH(E2&F2,A2:A21&B2:B21,0))

公式释义:

MATCH(E2&F2,A2:A21&B2:B21,0):将 E2&F2 合并的值与 A2:A21&B2:B21 合并区域绝对匹配,返回一个代表值在序列中的位置的数字;

INDEX(C2:C21,...):从区域 C2:C21 中提取出处于上述位置的值

解决方案 3:

这个公式就有点脑洞大开了。

输入以下公式:

=TOCOL(C2:C21/(A2:A21&B2:B21=E2&F2),2)

公式释义:

A2:A21&B2:B21=E2&F2:将区域 A2:A21 和 B2:B21 合并,并将合并后的每一个值依次与 E2 和 F2 的合并值相比较,结果为 true 或 false;

C2:C21/...:用 C 列的数值依次除以上述逻辑值,只有分母为 true 的可以得到 C 列的值,其他为 false 的都会得出错误值;

TOCOL(...,2):将上述区域转换成一列,参数 2 表示忽略错误值,因此只会提取出有值的那个元素

上述公式还可以写成:

=TOROW(C2:C21/(A2:A21&B2:B21=E2&F2),2)

将 tocol 换成了 torow,表示转换成行,由于最终结果只有一个单元格,所以用这两个函数得到的效果是一样的。

从 tocol 和 torow 函数的这种用法,我们可以衍生出另一种用途:批量一对多查找。

案例 2:

根据 E 列菜品,查找出购买了该菜品的所有人员名单,并横向列出。

效果如下图 2 所示。

解决方案:

在 F2 单元格中输入以下公式 --> 下拉复制公式:

=TOROW(IF(B2:B21=E2,A2:A21,NA()),2)

公式释义:

IF(B2:B21=E2,A2:A21,NA()):如果 B2:B21 区域中的值等于 E2,则返回 A2:A21 区域中对应的值,否则返回错误值 NA();

TOROW(...,2):将上述结果转换成一行,忽略其中的错误值

0 阅读:2

Excel学习世界

简介:Excel 学习交流