我正在寻找一种方法,在excel中对值应用按位AND并将其应用于范围。这是一张图片来说明:
我想在具有固定值的列“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
答案 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)
并复制下来。