正如在EXCEL中如何使用VBA进行格式转化所述,虽然EXCEL提供了非常丰富的函数集合,但是由于种种的原因,操作者不能够充分享受到它所带来的好处,比如或常用的异或(XOR)操作。本文以一个站在初学者的角度,浅析一下如何用VBA来实现这个简单的功能。
Public Function WYQXor(r As Range) As Long
Dim row As Integer
Dim col As Integer
Dim rs As Long
'XOR all cells in the range
rs = 0
For row = 1 To r.Rows.Count
For col = 1 To r.Columns.Count
rs = rs Xor r(row, col)
Next
Next
'Return the value
WYQXor = rs
End Function 这个函数假设单元中的数据就是十进制数据,如果是其他的格式,请参考在EXCEL中如何使用VBA进行格式转化文章所讲述的方法来实现它们之间的转化。对于喜欢用0x打头的用户,在转化之前要剔除0x字符串,作者提供了一个简易的版本,如下实现:
Public Function WYQHexToDec(hexStr As String) As String
WYQHexToDec= CInt(WYQConvert(Application.WorksheetFunction.Substitute(hexStr, "0x", ""), 16, 10))
End Function
Public Function WYQDecToHex(decStr As String) As String
Dim s As String
Dim l As Long
s = WYQConvert(decStr, 10, 16)
l = Len(s)
If (l Mod 2) <> 0 Then
s = "0x0" & s
Else
s = "0x" & s
End If
WYQDecToHex = s
End Function 其中的WYQConvert函数被实现在在EXCEL中如何使用VBA进行格式转化中,请参考它.作者喜欢十六进制是偶数表示,比如说0x 0A , 0x00等,所以在WYQDecToHex中加入了特定的处理.
总之,这些细节仅仅是个人爱好而以,对于它的通用版本,我认为WYQConvert是比较完整的.