Excel 匹配单元格(使用Vlooking、index、match)

Excel 匹配单元格(使用Vlooking、index、match),excel,indexing,excel-formula,match,vlookup,Excel,Indexing,Excel Formula,Match,Vlookup,我成功地使这个公式与姓名和日期匹配 =INDEX($B$1:$D$4,2,MATCH($G$1,$B$1:$D$1,0)) 但是我也想用相同名称的不同行进行匹配,比如如果我在“G1”单元格中输入2020/8/4这是“B7”,它可以显示为Lam=TTT99,Ma=UUU11,Co=OOO88 我的建议是,您应该以一种更简单、表格化的方式构建数据结构。如果这不是你的选择,我有一个更复杂的数组函数给你这是您的最终公式: =INDEX($A$1:$D$10;SUMPRODUCT(($A$1:$D$10

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

=INDEX($B$1:$D$4,2,MATCH($G$1,$B$1:$D$1,0))
但是我也想用相同名称的不同行进行匹配,比如如果我在“G1”单元格中输入
2020/8/4
这是“B7”,它可以显示为Lam=TTT99,Ma=UUU11,Co=OOO88


我的建议是,您应该以一种更简单、表格化的方式构建数据结构。如果这不是你的选择,我有一个更复杂的数组函数给你这是您的最终公式:

=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
。我假设你的名字总是按同一顺序依次是“林”、“马”和“Co”。请注意,如果您有重复的日期,此函数将不起作用

基本上,您仍然有一个
索引
函数。查找的行号和列号都是使用
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
中的日期匹配。假设它将产生以下
True
False的数组:

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

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

剩下的更容易:

-ROW($A$1)+ROWS($B$2:B2)+1
这个术语只需删除数据范围的第一行号(如果数据不是从第1行开始!),并允许您向下“拖动”公式,以便使用它查找
Lam
Ma
Co


列编号的过程完全相同。

好吧,您需要多个匹配项,这可能很有挑战性,因此请查看并编辑它以满足您的需要:使用
索引、匹配、mmult
。他们会帮助你的!如果可能的话,我会支持Wycisk先生重新格式化数据的动议。类似Date、Lam、Ma、Co的内容在顶部显示为字段和数据行。然后,一个简单的查找甚至透视表选项就成为可能。亲爱的Michael Wycisk,你能给我解释一下公式吗?@Codyton我已经添加了一些解释。但是这种数组公式非常先进。我希望它能让你了解它的工作原理。非常感谢迈克尔·维西斯克!