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


27

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

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

Ответы:


18

Как упоминалось ранее, формула = 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 ║ Десятичное число ║ 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 в ее раздел ввода, и она автоматически создала красивую разметку текста в юникоде.


16

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


1
Для справки, есть также, DEC2BIN()который преобразует в двоичный файл. Для двоичного кода с фиксированной шириной используйте что-то вроде=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg

1
В локализованном в Германии Excel 2013, DEC2HEX и HEX2DEC приводят к сообщению об ошибке #NAME ?. С помощью справки Office я мог узнать, что функции называются DEZINHEX и HEXINDEZ, соответственно.
Бернхард Хиллер

Как мне расширить = 0x1234AB до = 0x001234AB (мне нужна фиксированная ширина 8)?
Даниэль

@Danijel Используйте второй параметр DEC2HEX.
Винсент Г

7

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


2
Вы можете добавить ведущий «0x» к вашему шестнадцатеричному значению. Используйте, ="0x"&DEC2HEX(A1,4)чтобы получить результат, который выглядит как 0x1AF2.
User5910 30.06.16

4

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

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

=DEC2HEX(17)

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

=DEC2HEX(165)

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

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

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


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

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

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

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

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

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


0

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

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))

2
Объяснение того, что происходит в вашем коде, сделает ответ более полезным.
WilliamKF
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.