将十进制数转换成十六进制数的VBA自定义函数,解决内置函数的问题

2024-02-21 12:58:56 浏览数 (2)

标签:VBA,自定义函数

Excel中有一个函数DEC2HEX,可以将十进制数转换成十六进制数,然而,当要转换的十进制数较大时,就会出现错误。例如,当转换数字1111112222222时:

=DEC2HEX(1111112222222)

Excel会给出错误#NUM!。

我们可以使用一个VBA自定义函数来解决。代码如下:

代码语言:javascript复制
Function DecToHex(N As Double) As String
 Dim Y As Double
 Const H = "0123456789ABCDEF"
 
 While N <> 0
  '注意VBA Mod函数对于大数字也会失败
  Y = 16 * (N / 16 - Int(N / 16))
  DecToHex = Mid(H, Y   1, 1) & DecToHex
  N = N / 16 - Y / 16
 Wend
End Function

此时,使用公式:

=DecToHex(1111112222222)

返回值:102B373060E。

有兴趣的朋友可以试试。

注:这里分享的一些VBA程序或自定义函数,有些供研究或学习VBA,是很好的示例,有些或者说大部分都可以直接应用在自己的程序中,提高效率。

0 人点赞