Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2012, 14:35   #1
linregis
Новичок
Джуниор
 
Регистрация: 10.02.2012
Сообщений: 2
По умолчанию Преобразование числа из десятеричной системы в шестнадцатеричную

Доброго времени суток всем форумчанам!

У меня вопрос к специалистам по Excel. У меня задача перевести массив чисел из из десятеричной системы в шестнадцатеричную. Встроеные функции из пакета анализа не смогли этого сделать, т.к. большинство чисел находятся в пределах от 549755813887 до 1099511627775. Я попытался написать свою функцию преобразования, но стандартные операторы VBA (Mod и \) тоже не работают с такими числами( Есть ли какой-то способ преобразовать номера с помощью Excel или VBA?

Надеюсь на Вашу помощь.

Последний раз редактировалось linregis; 11.02.2012 в 15:48.
linregis вне форума Ответить с цитированием
Старый 11.02.2012, 15:45   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Пробуйте
Код:
Function ToHex(ByVal x As Double) As String
Dim y#, z&
Do
    y = Int(x / 16#)
    z = x - y * 16#
    x = y
    If z > 9 Then z = z + 7
    ToHex = Chr$(48 + z) & ToHex
Loop Until x = 0
End Function
549755813887 -> 7FFFFFFFFF
1099511627775 -> FFFFFFFFFF
так что вроде ОК?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.02.2012, 15:55   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Сделал то же самое, но всё же выложу, раз делал:

Код:
Function LongDecimal2Hex(ByVal x)
    While x > 0
        y = Fix(x / 16)
        LongDecimal2Hex = Hex(x - y * 16) & LongDecimal2Hex
        x = y
    Wend
End Function

Sub test()
    x = 1099511627775#
    Debug.Print x & " = " & LongDecimal2Hex(x)
End Sub

Последний раз редактировалось EducatedFool; 11.02.2012 в 15:57.
EducatedFool вне форума Ответить с цитированием
Старый 11.02.2012, 16:27   #4
linregis
Новичок
Джуниор
 
Регистрация: 10.02.2012
Сообщений: 2
По умолчанию

спасибо огромное) а то у меня уже мозги закипели), я VBA специально никогда не изучал, как оказалось много еще не знаю) в пятницу думал быстро все сделаю и домой, а тут такой затык( спасибо за помощь
linregis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль - перевод в восьмеричную и шестнадцатеричную системы счисления Tattoquardas Паскаль, Turbo Pascal, PascalABC.NET 5 25.01.2012 10:23
преобразование числа в символ в C++ Karina89 Помощь студентам 6 26.11.2011 00:23
преобразование числа Dim_Ka Помощь студентам 0 28.05.2011 11:32
Как перевести из двоичной системы счисления в восьмеричную и шестнадцатеричную koysara Помощь студентам 3 13.10.2010 19:10
Преобразование координат системы СК-42 Македонский Общие вопросы Delphi 5 09.03.2009 14:15