Wie formatiere ich eine Microsoft Excel 2007-Zelle im Hexadezimalformat?

106483
WilliamKF

Ich möchte eine Zelle in Microsoft Excel 2007 im Hexadezimalformat formatieren, finde aber nicht, wie das geht.

Gibt es eine integrierte Möglichkeit, die Basis für eine Zelle von 10 auf 16 zu ändern?

26

6 Antworten auf die Frage

16
Indrek

Wenn Sie eine Zelle so formatieren möchten, dass Sie eine Dezimalzahl eingeben und diese automatisch als Hexadezimalzahl anzeigen lassen können, ist dies nicht möglich. Sie können die Zelle entweder als Text formatieren und direkt Hexadezimalzahlen eingeben (beachten Sie jedoch, dass Excel diese nicht für Berechnungen verwenden kann), oder verwenden Sie die Funktionen DEC2HEX()und HEX2DEC()zum Konvertieren zwischen Basis 10 und Basis 16.

Als Referenz gibt es auch DEC2BIN (), das in Binärdateien konvertiert wird. Verwenden Sie für Binärdateien mit fester Breite etwas wie `= TEXT (DEC2BIN (A1)," 0000 ")` Tor Klingberg vor 8 Jahren 1
Bei einem lokalisierten Excel 2013 führen DEC2HEX und HEX2DEC zu der Fehlermeldung #NAME ?. Mit der Office-Hilfe konnte ich herausfinden, dass die Funktionen DEZINHEX bzw. HEXINDEZ heißen. Bernhard Hiller vor 7 Jahren 1
Wie erweitere ich = 0x1234AB auf = 0x001234AB (ich brauche eine feste Breite von 8)? Danijel vor 7 Jahren 0
@Danijel Verwenden Sie den zweiten Parameter von DEC2HEX. Vincent G vor 7 Jahren 0
13
OldEmbeddedGuy

Wie bereits erwähnt, wandelt sich die Formel = DEC2HEX (A1) in Hex um und DEC2HEX (A1, 8) in Hex mit 0-Präfix, um 32 Bit zu bezeichnen. Durch das Hinzufügen der führenden Nullen werden die Zahlen besser lesbar, insbesondere wenn Sie eine Schriftart mit festem Punkt verwenden. Die Hex- und Dezimalversionen können durcheinander geraten, wenn alle Ziffern in der Zahl 0-9 sind (z. B. 327701 = 50015).

Eine Verbesserung besteht darin, das Präfix "0x" hinzuzufügen. Es gibt zwei Möglichkeiten, dies zu tun. = "0x" & DEC2HEX (A1,8) führt den Trick aus, ändert jedoch das Feld in ein Textfeld, sodass es nicht mehr ohne weiteres in Formeln verwendet werden kann. Eine andere Methode ist die Verwendung eines benutzerdefinierten Formats. Wenn Sie das benutzerdefinierte Format "0x" @ auf die Zelle anwenden, kann der Wert der Zelle immer noch in einer Gleichung verwendet werden. Beispiele:

 ╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣ ║ 1 ║ ║ Wert ║ Entsprechende Formel ║ Zahlenformat ║ 2 ║ Dezimal ║ 11162790 ║ 11162790 ║ Allgemein ║ ║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Allgemein ║ ║ 4 ║ führende Nullen ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Allgemein ║ ║ 5 ║ Text 0x Präfix ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║ ║ 6 ║ Text 0x Präfix ║ 0x00AA54A6 6 = "0x" & DEC2HEX (B2,8) ║ Allgemeines ║ ║ 7 ║ Verwenden Sie B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ Allgemein ║ ║ 8 ║ Verwenden Sie B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║ ║ 9 ║ Versuchen Sie es mit B6 ║ #NUM! DEC = DEC2HEX (HEX2DEC (B6) * 256) ║ Allgemein ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝ 


Große Zahlen mit unterschiedlichen Ziffern können jedoch immer noch schwer lesbar sein. Daher setze ich Kommas gern in Dezimalzahlen und "_" in Hexadezimalzahlen. Zuerst müssen Sie die oberen und unteren 16 Bits der Zahl ermitteln. Die oberen 16 Bits einer 32-Bit-Zahl können mit = INT (A1 / 2 ^ 16) abgerufen werden. Das Teilen durch 2 ^ 16 wirkt wie eine Verschiebung nach rechts von 16 Bits, und der INT entfernt den gebrochenen Rest. MOD kann verwendet werden, um die unteren 16 Bits einer beliebigen 32- oder 64-Bit-Nummer abzurufen. = MOD (A1, 2 ^ 16). Der MOD erhält effektiv den Rest zurück, dh die unteren 16 Bits. Hier ist eine Tabelle, die dies in Aktion zeigt.

╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Wert ║ Entsprechende Formel ║ Format ║ ║ 2 ║ Dezimal 9 3,098,743,209, 3098743209 ║ #, ## 0 ║ ║ 3 ║ Upper Bytes ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ General ║ ║ 4 ║ niedrigere Bytes ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ Allgemein ║ 5 ║ Volle Nummer ║ 0xB8B3_11A9 ║ = "0x" & DEC2HEX (INT (B2 / 2 ^ 16), 4) Allgemeines "║ ║ ║ &" _ "& DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝ 


Übrigens, ich muss mich bei https://ozh.github.io/ascii-tables/ herzlich bedanken . Ich habe diesen Link verwendet, um die ASCII-Texttabellen zu erstellen. Ich habe die Tabelle gerade aus meiner Excel-Tabelle in den Eingabebereich kopiert und das nette Unicode-Textlayout wurde automatisch erstellt.

7
pnuts

Wenn zu konvertierende Zelle A1verwendet wird =DEC2HEX(A1).

Sie können Ihrem Hex-Wert ein führendes "0x" hinzufügen. Verwenden Sie `=" 0x "& DEC2HEX (A1,4)`, um ein Ergebnis zu erhalten, das wie "0x1AF2" aussieht. User5910 vor 7 Jahren 2
4
TestIt

Wenn Sie mathematische Operationen für Zahlen ausführen müssen, die in Hexadezimalzahlen umgewandelt wurden, konvertieren Sie diese zuerst in Dezimalzahlen.

Wenn die Zelle beispielsweise A1eine Hexadezimalzahl hat, wie sie aus dieser Formel erstellt würde:

=DEC2HEX(17) 

was würde als 11 angezeigt werden und Zelle A2hat Formel:

=DEC2HEX(165) 

die als angezeigt werden würde A5und Sie sie zusammen hinzufügen möchten, dann würde diese Formel das gewünschte Ergebnis erhalten:

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

die würde als angezeigt werden B6

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

Die REPT-Formel wiederholt die "0" basierend auf der Länge der Hex-Zeichenfolge, die durch die Umwandlung einer Dezimalzahl erzeugt wird, und der gewünschten Länge der HEX-Zeichenfolge. In diesem Beispiel möchte ich HEX-Strings der Länge 4 generieren.

Anschließend verketten Sie die führenden Nullen mit der aktuellen HEX-Zeichenfolge und erzeugen so den HEX-Wert der gewünschten Länge.

Vorteile:

  1. Einfaches Kopieren der Formel auf ein anderes Arbeitsblatt. Mit nur zwei Zellenreferenzen auf einen Dezimalwert, B3, um neu zuzuweisen.
  2. Die Ergebnisse dieser Formel werden von Excel als HEX-Werte behandelt. Sie könnten auch das "0x" voranstellen, aber ich finde es nicht notwendig.

Hinweis: Ich verwende dies, wenn ich HEX-Strings kopiere und sie in unterschiedlichen Längen kopiert werden. Ich generiere zuerst eine Spalte mit Dezimalwerten aus den ursprünglichen Werten, gegen die ich diese Formel ausführen kann.

0
Stephen Frick

Hier ist eine Lösung, die ich gefunden habe, um sicherzustellen, dass ich diese Hex-Zahlen im HTML-Format formatieren kann:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6)) 
Eine Erklärung dessen, was in Ihrem Code vor sich geht, würde die Antwort nützlicher machen. WilliamKF vor 7 Jahren 2