0

寻找类似于典型的索引匹配公式的东西,它可以向右看,向左返回值,但要查看一个范围内的所有列。以下面的有效公式为例。

(Excel 2021。)

在 D 列中查找 A1 的值,并从 C 列返回值。

=INDEX($C$1:$C$10,MATCH(A1,$D$1:$D$10,0))

在我的理想世界中,我可以保留 $D$1 并将 $D$ 10更改为 $F$10,以便它搜索所有列 D/E/F,并且仍然返回 C,如下所示。但是,这在我们的现实世界中行不通,请问还有其他想法吗?谢谢!

=INDEX($C$1:$C$10,MATCH(A1,$D$1:$F$10,0))

更新*澄清有字母和数字的混合。此外,该表将有大约 50k 行,因此希望尽可能简单。

此外,C 列肯定都是唯一的,DF 应该是唯一的值,但有可能出现错误,并且可能存在一些重复项。

4

2 回答 2

2

你需要MMUL()INDEX(). 如果你有,试试下面的公式Excel-365

=FILTER(C1:C10,MMULT(--(D1:F10=A1),SEQUENCE(COLUMNS(D1:F1))))

对于旧版本尝试

=INDEX($C$1:$C$10,LARGE(MMULT(--($D$1:$F$10=A1),TRANSPOSE({1,1,1}))*ROW($C$1:$C$10),1))

在此处输入图像描述

于 2021-08-23T02:35:41.293 回答
1

由于您的 INDEX/MATCH 取自相同的行,您可以首先简化原始搜索

=XLOOKUP(A1,$D$1:$D$10,$C$1:$C$10)

XLOOKUP结合HLOOKUPVLOOKUP以完全匹配为默认值。

这将适用于搜索三行

IFERROR(IFERROR(XLOOKUP(A1,$D$1:$D$10,$C$1:$C$10), XLOOKUP(A1,$E$1:$E$10,$C$1:$C$10)), XLOOKUP(A1,$F$1:$F$10,$C$1:$C$10))

我们可以将列命名为colC, colD, colE,colF并且它变成

IFERROR(IFERROR(XLOOKUP(A1,colD,colC), XLOOKUP(A1,colE,colC)), XLOOKUP(A1,colF,colC))

与其他查找一样,这将返回第一个值或#N/A错误。

如果我们被允许在某处添加一列,这可以针对更多的行变得更具可扩展性。

于 2021-08-23T02:37:31.467 回答