如何使用VBA将按位公式应用于范围

时间:2016-03-01 09:52:14

标签: excel vba excel-vba

我正在寻找一种方法,在excel中对值应用按位AND并将其应用于范围。这是一张图片来说明:

Exemple picture

我想在具有固定值的列“Status”上应用按位AND,假设为(1001b)。 如果状态& 1001b = 1001b,然后在“输出”中报告“值”字段。否则,放0。

可以使用Excel和VBA,但由于表格可能很大,解决方案可能不会使用循环(太慢,时间效率高的解决方案会很棒)。我正在使用excel 2010,因此我无法使用excel BITAND功能(仅适用于Excel 2013版本)

我搜索SO和互联网并没有找到解决类似问题的正确方法 我尝试优化使用递归的初始解决方案,以提高时间效率,这就是我所做的:

For cptDonnee_s32 = 0 To JeuDonnee_rs.RecordCount - 2 ' Loop through all my data

    If (Value And 8) = 8) And (Value And 1) = 1) Then ' Compare bitfields one by one
        Output = Value ' Replace output by value here
    Else 
        Output  = 0  ' put 0 in output there
    End If
next

1 个答案:

答案 0 :(得分:1)

您可以使用简单的UDF:

Function BitAnd(dIn As Double, lMatch As Long) As Boolean
    BitAnd = (dIn And lMatch) = lMatch
End Function

并输入:

=if(BitAnd(K2,9),L2,0)

并复制下来。