如何对某列中的奇数/偶数行使用COUNTIF函数进行统计
统计某列指定数量奇数/偶数行的符合条件单元格
核心思路
COUNTIF函数无法直接筛选行号或区域内位置的奇偶性,因此需要结合SUMPRODUCT、ROW、MOD函数实现统计,以下是两种常见场景的实用方案:
场景1:按工作表行号的奇偶统计(指定行范围)
比如要统计**D301到D400(共100行)**中,行号为奇数且单元格值等于2的数量:
=SUMPRODUCT(N(MOD(ROW(D301:D400),2)=1)*(D301:D400=2))
- 替换
D301:D400为目标行范围,=2为你要统计的条件 - 偶数行统计只需将
MOD(...,2)=1改为MOD(...,2)=0:
=SUMPRODUCT(N(MOD(ROW(D301:D400),2)=0)*(D301:D400=2))
场景2:按区域内相对位置的奇偶统计(不看工作表行号)
如果要统计从D301开始的前N行中,区域内第1、3、5...行(相对奇数位置)且值等于2的数量:
=SUMPRODUCT(N(MOD(ROW(D301:D400)-ROW(D301)+1,2)=1)*(D301:D400=2))
ROW(D301:D400)-ROW(D301)+1用于计算区域内的相对行号(从1开始)- 相对偶数位置统计同理,将
=1改为=0
动态指定统计行数(用单元格参数)
如果想通过单元格(比如A1)输入要统计的行数,公式可以改为:
=SUMPRODUCT(N(MOD(ROW(D301:INDEX(D:D,300+A1)),2)=1)*(D301:INDEX(D:D,300+A1)=2))
300+A1表示从D301开始往后数A1行(比如A1=50,就是D301:D350)- 该公式无需使用易失函数,稳定性更好
原公式失效原因
你之前的公式=SUMPRODUCT(N(ISODD(ROWS($D301))*$D301=2))中,ROWS($D301)仅返回1(单个单元格的行数),无法识别区域内的多行,将$D301改为区域引用(如D301:D400)即可解决问题。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

