提问人:TheEndUK 提问时间:11/26/2020 更新时间:11/26/2020 访问量:496
计算同一行中 3 列的匹配项数
Count how many matches in the same row across 3 columns
问:
我希望有人能帮忙,如果可能的话,我正在寻找解决以下问题的公式。
我有一列人名,对于这些人,我有来自 3 个不同来源的 3 列数据 - 我需要确定这 3 列中的数据与每个人匹配的次数。经过广泛的谷歌搜索,我只能找到将结果汇总到从 COUNTIF 范围派生的单元格中的解决方案,但是我需要将每个人的结果汇总在同一行中。
例如: “Dave”在单元格 A2 中,他的结果是:列 B2 = FAIL,C2 = PASS 和 D2 = PASS - 所以在这种情况下,我们有 2 个匹配项,因为有 2 个通过。 “Sue”在单元格 A3 中,她的结果是:列 B3 = FAIL,C3 = FAIL 和 D3 = FAIL - 所以在这种情况下,我们有 3 个匹配项,因为有 3 个失败。 “Colin”在单元格 A4 中,他的结果是:列 B4 = TBA,C4 = FAIL 和 D4 = PASS- 所以在这种情况下,我们有 0 个匹配项,因为没有一个结果匹配。
理想情况下,我希望每个人的匹配数在 E 列中列出,因此 Dave 的匹配结果将是单元格 E2,Sue 的匹配结果将在 E3 中,Dave 的匹配结果将在 E4 中。
非常感谢您的帮助。
亲切的问候,
TE公司
答:
您可以结合使用 IF()、MAX() 和 COUNTIF。
在 E2 中:
=IF(MAX(COUNTIF(B2:D2,B2),COUNTIF(B2:D2,C2),COUNTIF(B2:D2,D2))=1,0,MAX(COUNTIF(B2:D2,B2),COUNTIF(B2:D2,C2),COUNTIF(B2:D2,D2)))
因此,它执行三个单独的计数,以查看每个单元格中有多少是“重复”的。
取它们的最大值并与 1 进行比较,如果为 true,则返回 0,否则返回最大值。
在 E 列中,这样的事情会起作用吗?
=if(countif(B2:D2,B2)=3,3,if(countif(B2:D2,B2)=2,2,if(countif(B2:D2,C2)=2,2,0)))
让我知道这是否适合您。
评论
您可以尝试:
公式:E1
=INDEX({0,2,3},MAX(COUNTIF(B1:D1,B1:D1)))
给那些好奇的人一些解释:
COUNTIF(B1:D1,B1:D1)
- 将生成一个包含三个值的数组(每列 1 个),说明这些值在三个单元格中出现的频率。MAX()
- Get 是上一个数组的最大值。INDEX({0,2,3})
- 由于 的结果只能是 1-3,我们可以将其作为行参数输入到函数中。然后,这将产生 0、2 或 3。MAX()
INDEX()
不那么冗长,可能更明确一点是:
=MIN(((B1=C1)+(C1=D1)+(B1=D1))*2,3)
在最后一个公式中,我们使用 and 等价于 和 的事实,因此我们可以添加多个布尔值。通过一些数学运算,我们可以得到我们想要的结果。TRUE
FALSE
1
0
评论