CountIf在Excel中用公式标准

我试图在Excel(2010)中使用CountIf作为条件的公式。 像这样的东西:

=CountIf(rawdata!$AK:$AK;bitAnd(rawdata!$AK:$AK;F$3)) 

BitAnd是一个按位与操作的用户定义的VBA函数:

 Public Function bitAnd(a As Integer, b As Integer) As Integer bitAnd = a And b End Function 

任务是对所有具有某个位标记的行进行计数。 例如,我想要计算所有LSB设置为1的行(如0001,0101,…)。 也就是说,要做这样的事情(用伪代码):

 IF bitAnd(1;any number in the range) == 1 THEN count 

显然这不适用于CountIf,但有没有其他优雅的解决scheme使用公式(而不是在VBA中编写自定义函数)? 有什么build议么?

使用类似的东西

 =SUMPRODUCT(MOD(INT(($A3:$A19)/F$2),2)*1) 

这里, $A3:$A19是要testing的源码范围,F2是=2^(F$1-1) ,F1是要提取的位的顺序(1是LSB等)。当然,你可以写一个公式=SUMPRODUCT(MOD(INT(($A3:$A19)/2^(F$1-1),2))*1) 。 您应该根据需要调整绝对/相对索引,以便能够方便地进行复制和粘贴(就像我为testing公式所做的那样)。

请注意,这对于提取单个位非常有用,正如您所要求的那样。 在此基础上构build“完整”按位AND(尽pipe可能有更好的select)。

对于Excel 2013的具体情况(截至目前,不是您的目标),使用BITAND工作表函数以及COUNTIFSUMPRODUCT应该使您跟踪,并在这里你有一个“完整的”按位与可用(我没有Excel 2013testing这个)。