如果查找值匹配,则在最后一个匹配值的另一个单元格中查找

时间:2021-05-05 07:10:04

标签: excel excel-formula excel-2010 excel-2007

我已经为此苦苦挣扎了几天,所以我需要帮助:(

假设我有以下数据,其中包含以下列 A:ID、B:Felony、C:Recidivism 和 D:Same felony?。它看起来像这张表:

<头>
ID 重罪 再犯? 同样的重罪?
1 MX1902 窃取 没有 没有
2 MX1903 窃取 没有 没有
3 MX1901 绑架 没有 没有
4 MX1902 牛排

我一直在尝试做的是确定 A 列 (ID) 值是否与 上一个 列单元格匹配。如果为 TRUE,则查看最近的匹配行,并确定 B 列 (Felony)(来自同一匹配行)中单元格的值是否与实际行相同。对于此示例,我一直希望将公式放在 D4 上。

你们知道我如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

试试这个公式。

=IF(COUNTIFS($A$2:$A2,$A2,$B$2:$B2,$B2)>1,TRUE,FALSE)

诀窍是 $A$2:$A2 将随着公式向下复制而扩展为 $A$2:$A3 等,始终以公式行结尾(当然从第 2 行开始)。因此结果应始终至少为 1,因为当前行包含在计数中。如果结果更高,则存在重复,IF 函数返回 True

实际上,COUNTIFS($A$2:$A2,$A2,$B$2:$B2,$B2) 返回的是违规次数,因此 COUNTIFS($A$2:$A2,$A2,$B$2:$B2,$B2)-1之前 次违规的次数。

答案 1 :(得分:0)

如果您使用的是 Excel 2010,则可以使用 Aggregate 来查找最近的上一次攻击并将其与当前的攻击进行比较:

=IF(C2="No","No",IF(INDEX(B:B,AGGREGATE(14,6,ROW(A$1:A1)/(A$1:A1=A2),1))=B2,"Yes","No"))

@Variatus 建议的 Countifs 是一个很好的方法来查找是否有以前的进攻 - 我实际上使用 Match 作为替代:

=IF(ISNUMBER(MATCH(A2,A$1:A1,0)),"Yes","No")

enter image description here

这将给出“不”,因为尽管之前发生过“偷窃”事件,但最近的犯罪行为是绑架:

enter image description here