以下是我的数据示例:
用户 作用
有没有办法计算他们同时拥有Admin A和Admin B角色或Admin C和Admin D角色的用户。因此,在这种情况下,我希望总计数为3,因为'Bob'有Admin A和B角色以及C& D,而弗兰克只有C& d。
答案 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 ..因为这些是对)