Ich habe eine Zelle mit diesem Wert:
0x00006cd2c0306953
und ich möchte es in eine Zahl umwandeln.
Ich habe es versucht:
=HEX2DEC(C8)
Wo C8
ist die Zelle, die meinen Hex-Wert enthält?
Ich erhalte einen # NUM-Fehler.
Was mache ich falsch?
microsoft-excel
conversion
hexadecimal
Nathan Fellman
quelle
quelle
Antworten:
Sie könnten einfach verwenden:
len(A1)
gibt Ihnen die Länge der0x
Zeichenfolge. Schließen Sie die Länge von aus0x
, die verbleibende Zeichenfolge ist die Hex-Zahl. Verwenden Sie die Excel-Funktion, um die Dez. zu erhalten.quelle
HEX2DEC
maximal zehn hexadezimale Ziffern akzeptiert werden. Die Zeichenfolge in der Frage0x00006cd2c0306953
ist 18 Zeichen lang. Ihre Lösung bewertetRIGHT(A1,(LEN(A1)-2))
; 18−2 ist 16,RIGHT(…)
kehrt also zurück00006cd2c0306953
, was 16 Stellen lang ist. Selbst wenn Sie die führenden Nullen entfernen, haben Sie 12 Ziffern, was immer noch zu viele sind. Wenn Sie dies zum Laufen bringen können, beschreiben Sie bitte Ihre Konfiguration. (Dh, welche Version von Excel verwenden Sie? Und haben Sie etwas Schwieriges getan, um dies zum Laufen zu bringen?)Wie von TwiterZX angegeben, ist
Hex2Dec
die Eingabe auf 10 Zeichen und6cd2c0306953
12 Zeichen begrenzt. Das wird also nicht funktionieren, aber lassen Sie uns dafür unsere eigene Funktion rollen. Fügen Sie mit VBA ein Modul hinzu und verwenden Sie den folgenden Code (muss möglicherweise an Ihre Bedürfnisse angepasst werden).In Excel, sagen wir mal , die Zelle A1 enthält
0x00006cd2c0306953
, Formel des A2=HexadecimalToDecimal(A1)
ergeben wird1.19652E+14
. Formatieren Sie die Spalte auf eine Zahl mit null Dezimalstellen, und das Ergebnis ist119652423330131
.quelle
HEX2DEC ist auf 10 Zeichen begrenzt, aber das bedeutet nicht, dass wir es nicht verwenden können. Verwenden Sie es einfach mehrmals, um 10 Zeichen gleichzeitig zu konvertieren und die entsprechende Potenz von 2 auf jede Verwendung anzuwenden.
[Haftungsausschluss: Im Moment noch nicht getestet]
Später: Ich bin jetzt in einer Tabelle und bereit zum Testen. Ändern Sie die 3,5 in MID auf 3,6. Hmm .. Immer noch nicht richtig.
Es stellt sich heraus, dass der HEX2DEC an vorzeichenbehafteten Hex-Werten arbeitet, sodass der erste Term negativ ist. Ich weiß nicht warum, aber hier ist die feste Version, die 2 ^ 40 (oder 16 ^ 10, da wir in Hex arbeiten) hinzufügt, um Folgendes zu beheben:
Dies funktioniert jedoch nur, wenn RECHTS (C8,10) negativ ist. Hier ist meine allgemeine Lösung:
Ugggh.
quelle
Eine schmutzige Möglichkeit, diese Konvertierung ohne Verwendung einer Funktion durchzuführen (siehe dazu diesen Excel-Forenthread ), besteht darin, mit dieser Formel den Wert jedes Zeichens in der Zeichenfolge zu berechnen und diese dann zusammenzufassen. Dies beinhaltet offensichtlich die Verwendung temporärer Zellen, um die Zahl zu zerlegen:
Angenommen, Sie platzieren diese temporären Zellen in den Zeilen 1 bis 16, extrahieren Sie jedes Zeichen von rechts, konvertieren es in einen Wert und wenden dann die entsprechende Potenz von 16 an. Summieren Sie alle 16 Zellen, um Ihren Wert zu erhalten.
quelle
16^(ROW() - 1)
ist viel sauberer und leichter zu lesen alsPOWER()
Versuche Folgendes:
quelle
2^32
?Stellen Sie sicher, dass Ihre Spalte mit HEX-Nummern nicht 0x enthält. Die HEX-Nummer sollte C8 sein, nicht 0xC8. Ich hoffe es hilft.
quelle
HEX2DEC schlägt fehl, wenn führende oder nachfolgende nicht hexadezimale Zeichen (ABCDEF0123456789) vorhanden sind. Räume sind eine echte Landmine, weil sie nicht sichtbar sind. Häufig enthalten Hex-Zahlen, die als Zeichenfolgen dargestellt werden, in Protokolldateien führende und / oder nachfolgende Leerzeichen. Ich finde, dass "= HEX2DEC (TRIM (A1)) normalerweise dieses Problem behebt. Allerdings kann etwas wie" = HEX2DEC (RECHTS (TRIM (A1), 10)) aufgrund der 10-Zeichen-Beschränkung von HEX2DEC erforderlich sein.
quelle
Diese Funktion hat sich bei Verwendung geändert
also ohne Nummer 2 zwischen HEX & DEC
quelle
,
oder;
hier