Excel 中的 14 位十六进制转十进制

Excel 中的 14 位十六进制转十进制

Excel 中有一些 14 位十六进制数,我想将其转换为十进制数。

例如,在 C2 中,数字是 0438E96A095180,以十进制表示应该是 1188475064373632。

我尝试过 VBA 中的一个模块,但是它不起作用:

' Force explicit declaration of variables
Option Explicit

' Convert hex to decimal
' In:   Hex in string format
' Out:  Double
Public Function HexadecimalToDecimal(HexValue As String) As Double

' If hex starts with 0x, replace it with &H to represent Hex that VBA will understand
Dim ModifiedHexValue As String
ModifiedHexValue = Replace(HexValue, "0x", "&H")
HexadecimalToDecimal = CDec(ModifiedHexValue)

End Function

这样我得到的是十进制数 1188475064373630,而不是 1188475064373632。

我究竟做错了什么?

答案1

您需要将该值作为字符串返回,至少结果的精度要超过 15 位。

例如:

Option Explicit
' Convert hex to decimal
' In:   Hex in string format
' Out:  Decimal in string format
Public Function HexadecimalToDecimal(HexValue As String) As String

' If hex starts with 0x, remove it to represent Hex that VBA will understand
Dim ModifiedHexValue As String

ModifiedHexValue = "&H" & Replace(HexValue, "0x", "")

HexadecimalToDecimal = CDec(ModifiedHexValue)
End Function

我将让你测试长度并决定是否要返回字符串或数字;你会注意到我&H稍微修改了你的添加例程。

相关内容