八进制到hex数字在Excel中

我试图将一个12位数的八进制数转换为二进制

但看起来像Excel的内置函数OCT2Bin不会工作的数字大于517

所以我试图拆分数字并连接它们,但是它不起作用

我试过了

=OCT2BIN(MID(A2,1,2))&OCT2BIN(MID(A2,3,2))&OCT2BIN(MID(A2,5,2))&OCT2BIN(MID(A2,7,2))&OCT2BIN(MID(A2,9,2))&OCT2BIN(MID(A2,11,2)) 

例如八进制数字的二进制

 123456765432 

 1010011100101110111110101100011010 

但我的公式正在返回

 101011100101110111110101100110100 

我知道这个公式不起作用,因为我不应该打破这些数字并连接它们。 但我不知道如何在Excel中处理它

有没有办法将12位八进制数转换为二进制?

连接function是没有问题的,因为八进制数字中的每个数字都代表二进制数字中的三位数字。 你的问题是前导零被忽略,例如在你的例子中34o = 011100,但是前面的0不会被返回,所以你只能连接11100.OCT2BIN函数有另一个参数,你可以确定返回的位数:

 OCT2BIN(34) = 11100 OCT2BIN(34, 6) = 011100 

作为性能:您可以一次转换3个八进制数字,而不是只有2个。

由于excel-vba也被标记,所以使用VBA可以解决更一般的问题。

 Public Function myDec2Bin(ByVal decValue As Double) As String Select Case decValue Case 0 myDec2Bin = "0" Case 1 myDec2Bin = "1" Case Else myDec2Bin = myDec2Bin(Int(decValue / 2)) & IIf(decValue / 2 = Int(decValue / 2), "0", "1") End Select End Function Public Function myOct2Dec(octValue As String) As Double Dim decValue As Double For i = 0 To Len(octValue) - 1 decValue = decValue + Mid(octValue, i + 1, 1) * (8 ^ (Len(octValue) - 1 - i)) Next myOct2Dec = decValue End Function Public Function myOct2Bin(octValue As String) As String Dim decValue As Double decValue = myOct2Dec(octValue) myOct2Bin = myDec2Bin(decValue) End Function 

这些UDF都可以用作单元格公式,如:

 =myOct2Bin(A2) 

试试这个,我已经检查了结果 在这里输入图像说明