2016-03-01 46 views
0

我正在寻找一种方法来在Excel中将值按位进行应用并将其应用于范围。这里是图片说明:如何使用VBA将位按公式应用于范围

Exemple picture

我想申请按位和柱“状态”用一个固定的值,可以说(1001B)。 如果状态& 1001b = 1001b,则报告“输出”中的“值”字段。否则,把0.

既可以使用Excel和VBA,但由于表可能是巨大的,该解决方案可能不使用循环(太慢,时间效率的解决方案会很好)。我使用的是Excel 2010,因此excel BITAND功能不适用于我(仅适用于Excel 2013版本)

我在SO和Internet上搜索,没有找到类似问题的正确方法。
我尝试优化我该使用递归性最初的解决方案,为更多的时间效率,这里是我做了什么:

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

你可以使用一个简单的UDF:

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

,然后输入:

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

并抄下来。

+0

太棒了!您的解决方案非常简单,效果很好!我必须用“;”替换“;”;“得到一个有效的公式,但结果在这里。非常感谢你的帮助。 – dudu721

+0

这是由于您的区域设置。 :) – Rory

相关问题