作者:真正的爱情是什么2010 | 来源:互联网 | 2023-06-04 22:17
excel是从数据库中导出的,里面有一项IP项,在表中是以十进制显示的,比如3338666535,现在想让它以IP的形式显示,即3338666535转化为16进制是一个8位的16进制数字C700022
excel是从数据库中导出的,里面有一项IP项,在表中是以十进制显示的,比如3338666535,现在想让它以IP的形式显示,即3338666535转化为16进制是一个8位的16进制数字C7000227,这个数字每两位转化为10进制,就是192.0.2.39,这个过程如何自动实现?不懂代码,请给出详细脚本,多谢!
7 个解决方案
楼主是要Excel的公式还是Excel的VBA代码呢,
由于3338666535这个实际上已经超过VBA中的Long数据类型的范围,处理起来稍微麻烦一点(也是可以处理的)
建议使用公式为好,楼主明确一下吧,可以给公式,也可以给VBA代码。
楼上的,先谢过,无所谓公式还是VBA代码,只要能自动化实现就行,我要的是结果,过程无所谓。
Public Function GetIpStr(dblNumber As Double) As String
Dim strHex As String, strResult As String
Dim i As Long
' dblNumber = 3338666535#
'Get Hex representation
If dblNumber > (2 ^ 31 - 1) Then 'Deal with possible overflow for Long
dblNumber = dblNumber - 2 ^ 32
End If
strHex = Hex(dblNumber)
'Convert to decimal
strResult = ""
For i = 0 To 3
strResult = strResult & CLng("&H" & Mid(strHex, i * 2 + 1, 2)) & "."
Next i
strResult = Left(strResult, Len(strResult) - 1)
GetIpStr = strResult
End Function