COUNTIF多维度(垂直/水平)查找:统计"OOO"次数求助
解决特定用户对应"OOO"次数的统计问题
嘿,我来帮你搞定这个统计需求!先理清楚你的数据结构:看起来A列是用户列表(A2=user1,A3=user2等),B1到E1都是重复的表头wk12,B2到E5是对应用户的状态值,其中user1有3个OOO,其他用户暂无数据。
下面给你两个实用的公式方案,都能精准统计目标用户的OOO次数:
方案1:用COUNTIF + INDEX/MATCH(直接定位用户行)
这个方案适合你需要单独针对某个用户统计的场景,公式逻辑是先找到目标用户所在的行,再统计该行里OOO的数量:
=COUNTIF(INDEX(B2:E5,MATCH("user1",A2:A5,0),0),"OOO")
公式拆解:
MATCH("user1",A2:A5,0):在A2:A5范围内精准匹配user1,返回它所在的行序号(这里是1,因为user1在A2,是该区域的第1行)INDEX(B2:E5,1,0):返回B2:E5区域中第1行的所有数据(也就是user1对应的B2到E2单元格)COUNTIF(..., "OOO"):统计这个行范围内OOO的出现次数,结果就是3,完全符合你的需求
如果想让用户成为动态参数(比如把目标用户写在G2单元格),只需要把公式里的"user1"换成G2即可:
=COUNTIF(INDEX(B2:E5,MATCH(G2,A2:A5,0),0),"OOO")
方案2:用SUMPRODUCT(支持多条件扩展)
如果以后需要同时匹配表头(比如表头不止wk12),或者添加其他筛选条件,SUMPRODUCT会更灵活:
=SUMPRODUCT((A2:A5="user1")*(B2:E5="OOO"))
公式拆解:
(A2:A5="user1"):生成一个布尔数组,用户匹配的位置为TRUE(等价于1),不匹配为FALSE(等价于0)(B2:E5="OOO"):同样生成布尔数组,值为OOO的位置为1,其他为0- 两个数组相乘后,只有同时满足“是目标用户”且“值为OOO”的位置会得到1,SUMPRODUCT会把所有1相加,得到总次数
如果要加上表头匹配条件(比如只统计表头为wk12的列),可以扩展成:
=SUMPRODUCT((A2:A5="user1")*(B1:E1="wk12")*(B2:E5="OOO"))
这两个方案应该能解决你之前用INDEX/MATCH或SUMPRODUCT没成功的问题,大概率是之前的参数范围或者匹配逻辑没调整对~
内容的提问来源于stack exchange,提问作者B. Abear
相关产品推荐
相关产品推荐

