![根据两组标准找到最终结果](https://linux22.com/image/1350218/%E6%A0%B9%E6%8D%AE%E4%B8%A4%E7%BB%84%E6%A0%87%E5%87%86%E6%89%BE%E5%88%B0%E6%9C%80%E7%BB%88%E7%BB%93%E6%9E%9C.png)
我试图识别 D 列和 K 列之间的匹配项,然后在这些匹配项中,找出 A 列和 H 列上的匹配项。基本上,D (ABC) 列和 A (123) 列是链接的,而 K (ABC) 列和 H (123) 列是链接的。因此,在 D (ABC) 和 K (ABC) 之间的匹配项中,哪些匹配项在 A(123) 和 H(123) 之间也有匹配项。我知道 D 列和 K 列有许多匹配值,但我只关心在这些匹配项中,哪些匹配项在其对应的 A 列和 H 列中也有匹配项。
所以我想要如下的比赛结果列表(最终结果):1. D&K,然后2. A&H
因此,#1 上可能有 3,546 个匹配项,但在这些匹配项中,只有 450 个匹配项同时具有 #1 和 #2。这就像一个 IF/THEN 场景。我认为在 excel 中它是 vlookup 选项,但我无法让它工作。我还认为 Access 查询可以比较工作表 1 和工作表 2,并拉出工作表 3,显示工作表 1 列 A 和工作表 2 列 A 以及工作表 1 列 B 和工作表 2 列 B 之间的匹配项。
答案1
如果我正确理解了您的问题,那么您有一个从 A 列开始并至少到 K 列的值表。我假设您想要返回一个包含以下顺序的两组行的表:
- D 列和 K 列中的值都匹配,并且 A 列和 H 列中的值也匹配。
- 仅 A 列和 H 列中的值匹配。
举例来说,假设您的数据在 A2:K1001 范围内,那么以下是获取所需内容的一种方法。它使用一个辅助列。
在单元格 M2 中,输入此公式并将其复制到单元格 M1001 中:
=IF(A2<>H2,2,IF(D2=K2,0,1))*ROWS($A$2:$A$1001)+ROWS($A$2:A2)
公式为每一行分配一个数字。如果 D 列和 K 列以及 A 列和 H 列都匹配,则数字介于 1 到 1000 之间;如果只有 A 列和 H 列匹配,则数字介于 1001 到 2000 之间;否则数字介于 2001 到 3000 之间。
然后在单元格 M1 中输入以下公式。该公式计算您要返回的行数(即,在 D 和 K 列以及 A 和 H 列中具有适当匹配的值):
=COUNTIF($M$2:$M$1001,"<"&ROWS($M$2:$M$1001)*2+1)
接下来在单元格 N2 中输入公式,将该公式复制过去和将来时将返回您感兴趣的数据行。
=INDEX(A$2:A$1001,MATCH(SMALL($M$2:$M$1001,ROWS($M$2:M2)),$M$2:$M$1001,0))
从公式的中心向外,SMALL 函数计算刚刚分配的数字中的第 n 个最小值,即最小值,然后是第二小值,等等。MATCH 函数计算在 M 列下有多少行找到该数字(以及数据表中的对应行)。最后,INDEX 函数返回在 A 列下多少行找到的数据值。
最后,将公式复制到单元格 Y2 以获取第一行完整的数据,然后将这些公式复制到单元格 M1 中显示的行数。