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


27

Мені б хотілося, щоб формат комірки в Microsoft Excel 2007 був шістнадцятковим, але я не знаходжу, як це зробити.

Чи є вбудований спосіб змінити основу з 10 на 16 для комірки?

Відповіді:


18

Як було сказано раніше, формула = DEC2HEX (A1) перетворюється в шестнадцятковий, а DEC2HEX (A1,8) перетворюється в шестнадцятковий з префіксом 0 для позначення 32 біт. Якщо додавати провідні 0, то цифри є більш читабельними, особливо якщо ви використовуєте шрифт з фіксованою точкою, шістнадцяткову та десяткову версії можна змішати, коли всі цифри числа мають значення 0-9 (наприклад, 327701 = 50015).

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

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ ║ Значення ║ Відповідна формула Format Формат чисел ║
║ 2 ║ Десяткові ║ 11162790 ║ 11162790 ║ Загальні ║
║ 3 ║ Hex x 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 біт. Ось таблиця, яка показує це в дії.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ 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.
Користувач5910

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.