zames 发表于 2023-8-26 14:27

单元格数值用 VBA 转 16 进制数值

哪位老师懂得做英文数值转 16 进制值的帮忙下:handshake
一、B 列提取 A 列的右侧 15 位数值
二、对应 C 列转换 B 列的左侧第一位数值为 16 进制值,依此类推
三、R 列 转换 B 列 15 位合并的数值为 1 位 16 进制值
四、做个控件,在 A 列都输入好数据后,点击控件达成以上要求。


谢谢!

zames 发表于 2023-8-28 10:33

有大神帮忙看看,谢谢!

zames 发表于 2023-9-9 16:21

顶下。

林木水123 发表于 2023-9-11 09:17

本帖最后由 林木水123 于 2023-9-11 09:38 编辑

Sub 林木水demo()
Dim i As Integer, h As Integer, arr, sr
h = Cells(Rows.Count, "b").End(xlUp).Row
arr = Range("b3:b" & h)
For i = 1 To UBound(arr)
    sr = ""
    For j = 1 To 15
      If VBA.IsNumeric(Mid(arr(i, 1), j, 1)) Then
            Range("C2").Offset(i, j - 1) = Val(Mid(arr(i, 1), j, 1))
      Else
            Range("C2").Offset(i, j - 1) = ""
      End If
      sr = sr & Range("C2").Offset(i, j - 1).Value
    Next
      Range("R" & i + 2) = "'" & VBA.Hex(Val(sr))
Next
End Sub

林木水123 发表于 2023-9-11 09:27

本帖最后由 林木水123 于 2023-9-11 09:28 编辑

林木水123 发表于 2023-9-11 09:17

Sub 林木水demo()
Dim i As Integer, h As Integer, arr, sr
h = Cells(Rows.Count, "b").End(xlUp).Row
arr = Range("b3:b" & h)
For i = 1 To UBound(arr)
    sr = ""
    For j = 1 To 15
      If VBA.IsNumeric(Mid(arr(i, 1), j, 1)) Then
            Range("C2").Offset(i, j - 1) = Val(Mid(arr(i, 1), j, 1))
      Else
            Range("C2").Offset(i, j - 1) = ""
      End If
      sr = sr & Range("C2").Offset(i, j - 1).Value
    Next
'      Range("R" & i + 2) = VBA.Hex(Val(sr))
      Range("R" & i + 2) = "=DEC2HEX(" & Val(sr) & ")"
Next
End Sub
原第15行代码可以修改成现在这样的Excel自带的函数公式输入法。hex是Vb自带的十进制转十六。
页: [1]
查看完整版本: 单元格数值用 VBA 转 16 进制数值