В прикреплённом примере находится пользовательская функция для перевода из(в) различных систем счисления.
Штатными функциями Excel достаточно просто переводить числа из десятичной, двоичной, восьмеричной и шестнадцатеричной систем.
Для перевода, например, из 17-ричной в 23-ричную можно воспользоваться этой функцией. (Не спрашивайте меня "зачем?"
Код может работать с "условно" бесконечными системами.
Сейчас в коде максимальная система с основанием 35.
Для увеличения основания, дополните массив c = Array("0", ... значениями требуемой системы.
Штатными функциями Excel достаточно просто переводить числа из десятичной, двоичной, восьмеричной и шестнадцатеричной систем.
Для перевода, например, из 17-ричной в 23-ричную можно воспользоваться этой функцией. (Не спрашивайте меня "зачем?"
Код может работать с "условно" бесконечными системами.
Сейчас в коде максимальная система с основанием 35.
Для увеличения основания, дополните массив c = Array("0", ... значениями требуемой системы.
Код |
---|
Function СистемаСчисления(Число As String, Optional СистемаИз As Byte = 10, Optional СистемаВ As Byte = 10) Dim d As Double Dim i As Integer Dim s As String Dim c As Variant Dim z As Long Dim k As Byte c = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") If Число = "0" Then СистемаСчисления = "0" Else 'преобразование цифры в число d = 0 For i = 1 To Len(Число) s = Mid(UCase(Число), i, 1) k = 0 Do If s = c(k) Then d = d + k * СистемаИз ^ (Len(Число) - i) Exit Do End If k = k + 1 If k > UBound(c) Then Exit Do Loop Next 'преобразование числа в цифру s = "" For i = Val(Log(d) / Log(СистемаВ)) To 0 Step -1 z = СистемаВ ^ i k = Val(d / z) s = s & c(k) d = d - k * z Next СистемаСчисления = s End If End Function |