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

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

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

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

решение1

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

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

╔═══╦═════════════════╦═════════════╦═════════════════════════════════════════════════════════════════╗
║ ║ А ║ Б ║ ║ ║
╠═══╬═════════════════╬═══════════════╬═══════════════════════════════════════════════╣
║ 1 ║ ║ Значение ║ Соответствующая формула ║ Формат числа ║
║ 2 ║ Десятичный ║ 11162790 ║ 11162790 ║ Общий ║
║ 3 ║ Шестнадцатеричный ║ 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). MOD фактически возвращает остаток, который является нижними 16 битами. Вот таблица, которая показывает это в действии.

╔═══╦══════════════╦══════════════╦══════ ══════════════════════════════╦═════════╗
║ ║ А ║ Б ║ ║ ║
╠═══╬═══════════════╬═══════════════╬═══════ ════════════════════════════════╬═════════╣
║ 1 ║ ║ Значение ║ Соответствующая формула ║ Формат ║
║ 2 ║ Десятичная дробь ║ 3,098,743,209 ║ 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 в ее раздел «Ввод», и она автоматически создала красивую раскладку текста Unicode.

решение2

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

решение3

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

решение4

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

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

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

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

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

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

Связанный контент