Как отформатировать ячейку Microsoft Excel 2007 в шестнадцатеричном формате?

Я хотел бы отформатировать ячейку в Microsoft Excel 2007 в шестнадцатеричном формате, но я не нашел, как это сделать.

Есть ли встроенный способ изменить базу с 10 на 16 для клетки?

6 ответов

Решение

Как упоминалось ранее, формула =DEC2HEX(A1) преобразуется в шестнадцатеричный код, а DEC2HEX(A1,8) преобразуется в шестнадцатеричный с префиксом 0 для обозначения 32 битов. Хотя добавление начальных 0 делает числа более читабельными, особенно если вы используете шрифт с фиксированной запятой, шестнадцатеричная и десятичная версии могут смешиваться, когда все цифры в номере оказываются 0-9 (например, 327701=50015).

Улучшение заключается в добавлении префикса "0x". Есть 2 способа сделать это. ="0x"&DEC2HEX(A1,8) добьется цели, но изменит поле на текстовое поле, поэтому его уже нельзя будет легко использовать в формулах. Другой способ - использовать пользовательский формат. Если вы примените пользовательский формат "0x"@ к ячейке, тогда значение ячейки все еще может быть использовано в уравнении. Примеры:

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ ║ Значение ║ Соответствующая формула ║ Числовой формат ║
║ 2 ║ Десятичное число ║ 11162790   ║ 11162790                    ║ Общее ║
║ 3 ║ Hex            ║ AA54A6     ║ =DEC2HEX(B2)                ║ Общие сведения ║
║ 4 ║ ведущие 0 ║ 00AA54A6   ║ =DEC2HEX(B2,8)              ║ Общие сведения ║
║ 5 ║ Текстовый префикс 0x ║ 0x00AA54A6 ║ =DEC2HEX(B2,8)              ║ "0x"@         ║
║ 6 ║ Текстовый префикс 0x ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8)       ║ Общие сведения ║
║ 7 ║ Использовать B5         ║ AA54A600   ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ Общие сведения ║
║ 8 ║ Использовать B5         ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ "0x"@         ║
║ 9 ║ Попробуйте использовать B6  ║ #NUM!      ║ =DEC2HEX(HEX2DEC(B6) * 256) ║ Общие сведения ║
╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝


Однако большие числа с разными цифрами все еще трудно читать, поэтому я предпочитаю ставить запятые в десятичные числа, а "_" - в шестнадцатеричные числа. Сначала вам нужно получить верхний и нижний 16 бит числа. Старшие 16 бит 32-битного числа могут быть получены с помощью = INT( A1 / 2^16). Деление на 2 ^ 16 действует как сдвиг вправо на 16 бит, а INT удаляет дробный остаток. MOD может использоваться для получения младших 16 бит любого 32- или 64-битного числа; =MOD(A1, 2^16). Мод эффективно возвращает остаток, то есть младшие 16 бит. Вот таблица, которая показывает это в действии.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣
║ 1 ║ ║ Значение ║ Соответствующая формула ║ Формат ║
║ 2 ║ Десятичное число ║ 3098743209                         ║ 3098743209 ║ #,##0   ║
║ 3 ║ старшие байты ║ B8B3          ║ =DEC2HEX(INT( B2/2^16), 4)        ║ общие сведения ║
║ 4 ║ младшие байты ║ 11A9          ║ =DEC2HEX(MOD( B2, 2^16))          ║ общие сведения ║
║ 5 ║ Полное число ║ 0xB8B3_11A9   ║ ="0x" & DEC2HEX(INT( B2/2^16), 4) ║ Общее ║
"║             ║               ║ & "_"и DEC2HEX(MOD(B2, 2^16), 4)  ║         ║
╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝


Кстати, я должен поблагодарить https://ozh.github.io/ascii-tables/. Я использовал эту ссылку для создания текстовых таблиц ASCII. Я просто скопировал таблицу из моей таблицы Excel в ее раздел ввода, и она автоматически создала красивую разметку текста в юникоде.

Если вы хотите отформатировать ячейку, чтобы можно было ввести десятичное число и автоматически отобразить ее как шестнадцатеричное число, то это невозможно. Вы можете либо отформатировать ячейку как текст и ввести шестнадцатеричные числа напрямую (но учтите, что Excel не может использовать их для расчетов), либо использовать DEC2HEX() а также HEX2DEC() функции для преобразования между основанием 10 и основанием 16.

Если ячейка для преобразования A1 использование =DEC2HEX(A1),

Если вам нужно выполнить математические операции с числами, преобразованными в шестнадцатеричные числа, сначала преобразуйте их в десятичные числа, выполните операцию, а затем верните обратно в шестнадцатеричное число.

Например, если ячейка A1 имеет шестнадцатеричное число, например, созданное по этой формуле:

=DEC2HEX(17)

который будет отображаться как 11, и ячейка A2 имеет формулу:

=DEC2HEX(165)

который будет отображаться как A5и вы хотите сложить их вместе, тогда эта формула даст желаемый результат:

=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))

который будет отображаться как B6

=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

Формула REPT повторяет "0" в зависимости от длины шестнадцатеричной строки, сгенерированной путем преобразования ее из десятичной, и требуемой длины строки HEX. В этом примере я хочу сгенерировать строки HEX длиной 4.

Затем вы объединяете ведущие нули в фактическую строку HEX, тем самым генерируя значение HEX желаемой длины.

Преимущества:

  1. Простое копирование формулы в другой лист. Только две ссылки на ячейку для десятичного значения, B3, для переназначения.
  2. Результаты этой формулы обрабатываются Excel как значения HEX. Вы также можете добавить префикс "0x", но я не считаю это необходимым.

Примечание: я использую это, когда копирую строки HEX, и они копируются с различной длиной. Сначала я генерирую столбец десятичных значений из исходных значений, с которыми затем могу запустить эту формулу.

Вот решение, которое я нашел, чтобы убедиться, что я могу отформатировать эти шестнадцатеричные числа в формат HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
Другие вопросы по тегам