excel - 匹配单元格(使用 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
解决方案
我的建议是您以更简单的表格方式构建数据。如果这不是您的选择,我有一个更复杂的数组函数供您使用。这是你的最终公式:
=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
。想象一下,它将产生以下数组True
和False
:
如您所见,对于 2020 年 8 月 5 日的选定数据,只有一个匹配项。为了获得行号,我们将此数组与另一个虚构数组相乘ROW($A$1:$D$10)
:
由于只有第七行包含 a True
,所以乘法的结果将是 7。这是搜索数据所在的绝对行。
其余的更容易:
-ROW($A$1)+ROWS($B$2:B2)+1
该术语将简单地删除数据范围的第一行号(以防您的数据不是从第 1 行开始!)并允许您“拖动”您的公式,以便您可以使用它来查找Lam
,Ma
和Co
.
列号的过程完全相同。
推荐阅读
- mongodb - 筛选 MongoDB 聚合中的查找集合
- javascript - JavaScript - 直接在多行字符串中循环遍历数组并包含值
- python - Pyside6 应用程序在 2 次定时器超时和图片上的蓝色色调后退出
- r - 我应该如何获得均值和标准差取决于“日”和“类别”列,而无需在 R 代码中手动过滤
- java - 任务“:app:javaPreCompileDebug”执行失败
- nanoframework - 我喜欢将纳米框架扩展到 AURIX 产品,从哪里开始?
- xilinx-ise - Xilinx ISE Design Suite 14.7 未安装
- apache-kafka - Kafka 消费者的问题(提供的成员在当前一代中未知)
- ruby-on-rails - nil:NilClass 的未定义方法`klass`
- asp.net - 我们如何在不使用外部 IP 的情况下在 GCP 中部署 ASP.NET Framework 映像?我的应用程序在 ASp.net Windows 窗体中,我想在 GCP 上部署它