Comment formater une cellule Microsoft Excel 2007 en hexadécimal?


27

Je voudrais formater une cellule dans Microsoft Excel 2007 en hexadécimal mais je ne trouve pas comment faire cela.

Existe-t-il un moyen intégré de changer la base de 10 à 16 pour une cellule?

Réponses:


18

Comme mentionné précédemment, la formule = DEC2HEX (A1) est convertie en hexadécimal et DEC2HEX (A1,8) est convertie en hexadécimal avec le préfixe 0 pour indiquer 32 bits. Bien que l'ajout des premiers 0 rend les nombres plus lisibles, surtout si vous utilisez une police à virgule fixe, les versions hexadécimale et décimale peuvent se mélanger lorsque tous les chiffres du nombre se trouvent être 0-9 (par exemple 327701 = 50015).

Une amélioration consiste à ajouter le préfixe "0x". Il y a 2 façons de procéder. = "0x" & DEC2HEX (A1,8) fera l'affaire, mais il change le champ en champ de texte, il ne peut donc plus être facilement utilisé dans les formules. Une autre méthode consiste à utiliser un format personnalisé. Si vous appliquez le format personnalisé "0x" @ à la cellule, la valeur de la cellule peut toujours être utilisée dans une équation. Exemples:

╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣
║ 1 ║ ║ Valeur ║ Formule correspondante ║ Format des nombres ║
║ 2 ║ Décimal ║ 11162790 ║ 11162790 ║ Général ║
║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Général ║
║ 4 ║ 0 en tête ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Général ║
║ 5 ║ Préfixe de texte 0x ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║
║ 6 ║ Préfixe Texte 0x ║ 0x00AA54A6 ║ = "0x" & DEC2HEX (B2,8) ║ Général ║
║ 7 ║ Utilisez B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Général ║
║ 8 ║ Utilisez B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║
║ 9 ║ Essayez d'utiliser B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Général ║
╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝


Cependant, les grands nombres avec des chiffres variables peuvent toujours être difficiles à lire, donc j'aime mettre des virgules en nombres décimaux et des "_" en nombres hexadécimaux. Vous devez d'abord obtenir les 16 bits supérieurs et inférieurs du nombre. Les 16 bits supérieurs d'un nombre de 32 bits peuvent être récupérés avec = INT (A1 / 2 ^ 16). La division par 2 ^ 16 agit comme un décalage à droite de 16 bits, et l'INT supprime le reste fractionnaire. MOD peut être utilisé pour obtenir les 16 bits inférieurs de n'importe quel nombre 32 ou 64 bits; = MOD (A1, 2 ^ 16). Le MOD récupère effectivement le reste, qui est les 16 bits inférieurs. Voici un tableau qui montre cela en action.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗
║ ║ A ║ B ║ ║ ║
╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣
║ 1 ║ ║ Valeur ║ Formule correspondante ║ Format ║
║ 2 ║ Décimal ║ 3098743209 ║ 3098743209 ║ #, ## 0 ║
║ 3 ║ Octets supérieurs ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Général ║
║ 4 ║ Octets inférieurs ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Général ║
║ 5 ║ Numéro complet ║ 0xB8B3_11A9 ║ = "0x" & DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Général ║
║ ║ ║ ║ & "_" & DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║
╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝


BTW, je dois remercier chaleureusement https://ozh.github.io/ascii-tables/ . J'ai utilisé ce lien pour créer les tableaux de texte ASCII. Je viens de copier le tableau de ma feuille de calcul Excel dans sa section Entrée et il a automatiquement créé la belle mise en page de texte Unicode.


16

Si vous souhaitez formater une cellule pour pouvoir saisir un nombre décimal et l'afficher automatiquement sous forme de nombre hexadécimal, ce n'est pas possible. Vous pouvez soit formater la cellule sous forme de texte et saisir directement des nombres hexadécimaux (mais notez qu'Excel ne peut pas les utiliser pour les calculs), soit utiliser les fonctions DEC2HEX()et HEX2DEC()pour convertir entre la base 10 et la base 16.


1
Pour référence, il y en a aussi DEC2BIN()qui se convertit en binaire. Pour les binaires à largeur fixe, utilisez quelque chose comme=TEXT(DEC2BIN(A1), "0000")
Tor Klingberg

1
Sur un Excel 2013 localisé en allemand, DEC2HEX et HEX2DEC génèrent le message d'erreur #NAME ?. Avec l'aide d'Office, j'ai pu découvrir que les fonctions s'appelaient DEZINHEX et HEXINDEZ, resp.
Bernhard Hiller

Comment étendre = 0x1234AB à = 0x001234AB (j'ai besoin d'une largeur fixe de 8)?
Danijel

@Danijel Utilisez le deuxième paramètre de DEC2HEX.
Vincent G

7

Si la cellule à convertir est A1utilisée =DEC2HEX(A1).


2
Vous voudrez peut-être ajouter un "0x" à votre valeur hexadécimale. Utilisez ="0x"&DEC2HEX(A1,4)pour obtenir un résultat qui ressemble à 0x1AF2.
User5910

4

Si vous devez effectuer des opérations mathématiques sur des nombres convertis en hexadécimal, convertissez-les d'abord en décimal, effectuez l'opération, puis reconvertissez en hexadécimal.

Par exemple, si la cellule A1a un nombre hexadécimal, tel que celui qui serait créé à partir de cette formule:

=DEC2HEX(17)

qui serait affiché comme 11, et la cellule A2a la formule:

=DEC2HEX(165)

qui serait affiché comme A5, et vous voulez les ajouter ensemble, alors cette formule obtiendrait le résultat souhaité:

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

qui serait affiché comme B6


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

La formule REPT répète le «0» en fonction de la longueur de la chaîne hexadécimale générée en la convertissant à partir d'une décimale et de la longueur souhaitée de la chaîne HEX. Dans cet exemple, je cherche à générer des chaînes HEX de longueur 4.

Vous concaténez ensuite les zéros de tête à la chaîne HEX réelle, générant ainsi la valeur HEX de la longueur souhaitée.

Avantages:

  1. Copie facile de la formule dans une autre feuille de calcul. Avec seulement deux références de cellule à une valeur décimale, B3, à réaffecter.
  2. Les résultats de cette formule sont traités comme des valeurs HEX par Excel. Vous pouvez également préfixer le "0x", mais je ne le trouve pas nécessaire.

Remarque: je l'utilise lorsque je copie des chaînes HEX et qu'elles sont copiées à différentes longueurs. Je génère d'abord une colonne de valeurs décimales à partir des valeurs d'origine sur lesquelles je peux ensuite exécuter cette formule.


0

Voici une solution que j'ai trouvée pour m'assurer que je peux formater ces nombres hexadécimaux au format HTML:

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

2
Une explication de ce qui se passe dans votre code rendrait la réponse plus utile.
WilliamKF
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.