gpt4 book ai didi

vba - Excel中的CountIf与标准中的公式

转载 作者:行者123 更新时间:2023-12-04 20:44:59 27 4
gpt4 key购买 nike

我正在尝试在 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,但是是否有任何其他使用公式的优雅解决方案(而不是在 VBA 中编写自定义函数)?有什么建议么?

最佳答案

使用类似的东西

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

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

请注意,这对于提取单个位很有用,正如您所要求的。可以在此基础上构建“完整的”按位与(尽管可能有更好的选择)。

对于 Excel 2013的具体情况(截至目前,不是您的目标),使用 BITAND工作表函数以及 COUNTIFSUMPRODUCT应该让你走上正轨,在这里你有一个“完整的”按位可用(我没有 Excel 2013 来测试这个)。

关于vba - Excel中的CountIf与标准中的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20544613/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com