首页 > 解决方案 > 匹配单元格(使用 Vlooking、索引、匹配)

问题描述

我已经成功地使这个公式与姓名和日期相匹配,

=INDEX($B$1:$D$4,2,MATCH($G$1,$B$1:$D$1,0))

但是我也想用同名的不同行进行匹配,比如如果我2020/8/4在“G1”单元格中输入这是“B7”,可以显示Lam = TTT99,Ma = UUU11,Co = OOO88

在此处输入图像描述

标签: excelindexingexcel-formulamatchvlookup

解决方案


我的建议是您以更简单的表格方式构建数据。如果这不是您的选择,我有一个更复杂的数组函数供您使用。这是你的最终公式:

=INDEX($A$1:$D$10;SUMPRODUCT(($A$1:$D$10=$G$1)*ROW($A$1:$D$10))-ROW($A$1)+ROWS($B$2:B2)+1;SUMPRODUCT(($A$1:$D$10=$G$1)*COLUMN($A$1:$D$10))-COLUMN($A$1)+1)

这个公式进入G2- 你可以把它拖到G4. 我假设你的名字总是以相同的顺序是“Lam”、“Ma”和“Co”。请注意,如果您有重复的日期,此功能将不起作用。

基本上,你仍然有一个INDEX功能。查找的行号和列号都是使用SUMPRODUCT函数确定的(因为这个函数允许我们在二维范围内进行查找)。

第一个 SUMPRODUCT 项将产生行号:

SUMPRODUCT(($A$1:$D$10=$G$1)*ROW($A$1:$D$10))-ROW($A$1)+ROWS($B$2:B2)+1

该术语$A$1:$D$10=$G$1将检查您的数据范围内的所有单元格是否与单元格中的日期匹配G1。想象一下,它将产生以下数组TrueFalse

虚数阵列

如您所见,对于 2020 年 8 月 5 日的选定数据,只有一个匹配项。为了获得行号,我们将此数组与另一个虚构数组相乘ROW($A$1:$D$10)

虚数组行号

由于只有第七行包含 a True,所以乘法的结果将是 7。这是搜索数据所在的绝对行。

其余的更容易:

-ROW($A$1)+ROWS($B$2:B2)+1

该术语将简单地删除数据范围的第一行号(以防您的数据不是从第 1 行开始!)并允许您“拖动”您的公式,以便您可以使用它来查找Lam,MaCo.

列号的过程完全相同。


推荐阅读