有没有办法计算符合特定条件的重复行?

时间:2015-03-03 15:45:18

标签: excel excel-formula

以下是我的数据示例:

用户 作用
Bob Admin A
Bob Admin B
Bob Admin C
Bob Admin D
Frank Admin A Frank Admin C
Frank Admin D


有没有办法计算他们同时拥有Admin A和Admin B角色或Admin C和Admin D角色的用户。因此,在这种情况下,我希望总计数为3,因为'Bob'有Admin A和B角色以及C& D,而弗兰克只有C& d。

2 个答案:

答案 0 :(得分:1)

我终于找到了符合我需求的东西,并意识到我可能错过了问题中的一些关键信息,道歉。我使用下面的公式创建了2个作为标志的列。

=IF($A3=$A2,"",IF(COUNTIFS($A:$A,$A3,$D:$D,$G$5)>0,IF(COUNTIFS($A:$A,$A3,$D:$D,$G$7)>0,"YES",""),""))

所以在这种情况下,我会计算指定角色的次数,例如'Admin A'(单元格G5)针对给定用户出现。如果这大于0,则对第二个角色进行另一次计数,导致重复,例如'管理员B'(单元格G7)。如果这大于0,那么我可以假设用户同时拥有这两个角色。

我把这一切都包裹在检查中,看看上面一行中的用户是否与当前行相同,如果是,则不进行计算。这是为了阻止同一个用户多次出现该标志。注意:这假定数据在用户上排序(我公式中的A列)。

我终于计算了列中的所有'是的',这些列中有我的公式计算出有多少人最终会出现重复的角色,在下面的公式中这是E列:

=COUNTIF($E:$E, "YES")

答案 1 :(得分:0)

我设法通过以较小的步骤分解结果来获得结果(大多数情况下你可以看到发生了什么)。在这一点上,不确定答案如何“凝聚”,但我相信你可以压缩一些。

在A,B列中使用原始样本。

C2:=CONCATENATE(A2,":",B2)

D2:=RIGHT(B2,1)

E2:=IF(D2="A","B",IF(D2="B","A",IF(D2="C","D",IF(D2="D","C","?"))))

F2:=SUBSTITUTE(C2,CONCATENATE("Admin ",D2),CONCATENATE("Admin ",E2))

G2:=MATCH(F2,C:C,0)

H2:=IF(ISERROR(G2),0,1)

将C2:H2复制到C8:H8 ..

H1:=SUM(H2:H8)/2

您可以将其中的部分或全部组合到一个列中。但是,在您基本上“标记”“可以考虑”的行之后,最终的SUM / 2将执行“魔术”。

总结: 1)id A< => B OR C< => D的映射和关系... 2)然后使用MATCH找到另一个匹配并标记该行 3)最后计算匹配(和/ 2 ..因为这些是对)