统计A列同值对应B列双值情况及Excel玩家对阵记录查询问题
需求1:统计A列取值相同时,B列存在两个对应值的次数
适用Excel 365/2021及以上版本
公式如下,可直接修改范围适配你的实际数据:=SUM(--(BYROW(UNIQUE(A2:A1000),LAMBDA(x,COUNTA(UNIQUE(FILTER(B2:B1000,A2:A1000=x))))>=2))
说明:
- 把A2:A1000、B2:B1000替换为你实际的A、B列数据范围
- 公式默认统计对应B列至少有2个不同值的A值数量,如果需要统计恰好有2个的场景,把
>=2改为=2即可
适用低版本Excel(无LAMBDA/UNIQUE函数)
用SUMPRODUCT实现的公式,解决了普通SUMPRODUCT重复计数的问题:=SUMPRODUCT(--(COUNTIFS(A:A,A2:A1000,B:B,"<>"&B2:B1000)>0)/COUNTIF(A:A,A2:A1000))
说明:公式通过COUNTIFS判断相同A值下是否存在不同B值,再通过除以同A值的总计数实现去重统计。
需求2:查询8808玩家是否与E5向下罗列的所有玩家都有对阵记录
默认规则:对阵记录的两个玩家分别存储在B、C两列,如果你的存储列不同,可自行替换公式中的列号。
适用Excel 365/2021及以上版本
可直接返回结果,未对阵的玩家还会自动罗列:=LET(opps,FILTER(E5:E1000,E5:E1000<>""),cnt_total,COUNTA(opps),cnt_matched,SUMPRODUCT(--(COUNTIFS(B:B,8808,C:C,opps)+COUNTIFS(B:B,opps,C:C,8808)>0)),IF(cnt_total=cnt_matched,"是","否,未对阵玩家:"&TEXTJOIN("、",,FILTER(opps,COUNTIFS(B:B,8808,C:C,opps)+COUNTIFS(B:B,opps,C:C,8808)=0))))
适用低版本Excel
返回TRUE代表全部对阵过,返回FALSE代表存在未对阵的玩家:=SUMPRODUCT(--(COUNTIFS(B:B,8808,C:C,E5:INDEX(E:E,COUNTA(E:E)))+COUNTIFS(B:B,E5:INDEX(E:E,COUNTA(E:E)),C:C,8808)>0))=COUNTA(E5:INDEX(E:E,COUNTA(E:E)))
注意事项
- 所有公式中的数据范围可根据你的实际行数调整,缩小计算范围能提升运行效率
- 如果对阵玩家的存储列不是B、C,替换公式内的对应列号即可
内容的提问来源于stack exchange,提问作者Ed Lee

