Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hex in Dez mit großen Zahlen

Hex in Dez mit großen Zahlen
06.04.2020 13:07:48
Conrad
Hallo,
ich versuche HEX Werte in dezimale Stellen umzuwandeln, die HEX Werte sind allerdings 14 Stellen lang.
Da ich keinerlei Erfahrung in VBA habe würde ich mich über etwas Hilfe hier freuen.
Beste Grüße
Conrad
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: im Arbeitsblatt
06.04.2020 13:15:08
Fennek
Hallo,
teste zuerst, ob die Arbeitsblatt-Funktion funktioniert. Falls ja, geht in VBA WorsheetFunction....
mfg
AW: im Arbeitsblatt
06.04.2020 13:21:45
Conrad
Hallo,
also Visual Basic kann ich zumindest öffnen falls das die Frage war?
AW: etwas ausführlicher
06.04.2020 13:39:08
Fennek
Hallo,
da ich mich am Wochenende mit 1024 bit Zahlen herumgeschlagen habe, kamen mir "bloss" 14 Stellen eher wenig vor.
Wenn in A1: a1b2c3e4f512
Formel in A2: =decimal(A1;16)
in VBA wäre &Ha1b2c3
aber 14 Stellen sind zuviel.
In Powershell geht $Hx = 0xa1b2c3e4f512
(oder Python)
Kann man die Zahl aufteilen (/256)?
Anzeige
AW: etwas ausführlicher
06.04.2020 13:51:32
Conrad
Ich kann die Zahlen leider nicht aufteilen.
Wenn in A1: a1b2c3e4f512
Formel in A2: =decimal(A1;16)
ist mein Ergebnis 1,77789E+14,
AW: Entweder …
06.04.2020 13:32:19
Conrad
Die Lösung aus dem Archiv bringt mir leider nix da die Umrechnung falsch ist. Ich bekomme andere Werte als im Windows Rechner.
Der Windows Rechner gibt mir zwar die korrekten Ergebnisse, aber ich hätte die Umrechnung gerne in einer Excel Liste.
AW: vielleicht
06.04.2020 13:44:23
Fennek
Hx = &Ha1b2c3d4e5f6
H1 = &Ha1b2c3
H2 = &Hd4e5f6
debug.print h1 * h2
prüfe das Ergebnis
Anzeige
AW: vielleicht
06.04.2020 13:49:48
Conrad
Tut mir Leid, ich kann dir gerade nicht folgen?
AW: Entweder …
06.04.2020 14:59:48
Daniel
Hi
Das Problem ist, dass du mit 14-stelligen Hex-Werten Dezimalwerte in der Größenordnung 10^16 bekommst.
Das ist aber mehr, als die Rechengenauigkeit von Excel hergibt, das sind nämlich maximal 15 Dezimalstellen.
Gibst du größere Zahlen ein, werden die letzten Stellen weg gerundet.
Dh bei der Umrechnung im Makro müsste ein Datentyp verwendet werden, der diese Genauigkeit kann, und in Excel müssten die Ergebnisse als Text behandelt werden.
Gruß Daniel
Anzeige
AW: Hex in Dez mit großen Zahlen
06.04.2020 14:02:47
Nepumuk
Hallo Conrad,
teste mal:
Option Explicit

Public Sub Beispiel()
    Dim strHex As String, strSign As String
    Dim lngIndex As Long
    Dim decValue As Variant
    decValue = CDec(decValue)
    strHex = "F0335AF2586204AAA"
    For lngIndex = 1 To Len(strHex)
        strSign = Mid$(strHex, lngIndex, 1)
        Select Case strSign
            Case 0 To 9
                decValue = decValue * 16 + CDbl(strSign)
            Case "A"
                decValue = decValue * 16 + 10
            Case "B"
                decValue = decValue * 16 + 11
            Case "C"
                decValue = decValue * 16 + 12
            Case "D"
                decValue = decValue * 16 + 13
            Case "E"
                decValue = decValue * 16 + 14
            Case "F"
                decValue = decValue * 16 + 15
        End Select
    Next
End Sub

Gruß
Nepumuk
Anzeige
AW: Hex in Dez mit großen Zahlen
06.04.2020 14:13:19
Conrad
Moin,
vielen Dank erstmal.
Aber wie genau kann ich das denn ausführen? Hab jetzt vba geöffnet es dort eingetragen und die Excel-Liste mit Makros gespeichert.
Wie genau kann ich es jetzt testen?
Danke!
AW: Hex in Dez mit großen Zahlen
06.04.2020 14:15:10
Nepumuk
Hallo Conrad,
als Funktion die du in deiner Mappe einsetzen kannst:
 AB
280335AF258620436085262724915716
380335AF2585F0436085262724914948

ZelleFormel
B2=HexInDec(A2)
B3=HexInDec(A3)

Option Explicit

Public Function HexInDec(ByVal pvstrHex As String) As String
    Dim strSign As String
    Dim lngIndex As Long
    Dim decValue As Variant
    decValue = CDec(decValue)
    For lngIndex = 1 To Len(pvstrHex)
        strSign = Mid$(pvstrHex, lngIndex, 1)
        Select Case strSign
            Case 0 To 9
                decValue = decValue * 16 + CDbl(strSign)
            Case "A"
                decValue = decValue * 16 + 10
            Case "B"
                decValue = decValue * 16 + 11
            Case "C"
                decValue = decValue * 16 + 12
            Case "D"
                decValue = decValue * 16 + 13
            Case "E"
                decValue = decValue * 16 + 14
            Case "F"
                decValue = decValue * 16 + 15
        End Select
    Next
    HexInDec = CStr(decValue)
End Function

Gruß
Nepumuk
Anzeige
AW: Hex in Dez mit großen Zahlen
06.04.2020 14:24:07
Conrad
okay.
Userbild
Hier mal als Screenshot mein Ergebnis, also irgendwas läuft wohl verkehrt :(
AW: Hex in Dez mit großen Zahlen
06.04.2020 14:41:16
Nepumuk
Hallo Conrad,
du musst die Function aus meinem letzten Post benutzen und in der Tabelle die Schreibweise beachten.
Gruß
Nepumuk
Anzeige
AW: Hex in Dez mit großen Zahlen
06.04.2020 15:20:29
Conrad
Wahnsinn!
Es funktioniert, geil!
Dankeschön!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Hex in Dezimal umwandeln: Umrechnung großer Zahlen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne das VBA-Editor-Fenster in Excel, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf „Einfügen“ und wähle „Modul“.
  3. Füge den folgenden VBA-Code ein, um eine Funktion zur Umrechnung von Hexadezimal in Dezimal zu erstellen:

    Option Explicit
    
    Public Function HexInDec(ByVal pvstrHex As String) As String
       Dim strSign As String
       Dim lngIndex As Long
       Dim decValue As Variant
       decValue = CDec(decValue)
       For lngIndex = 1 To Len(pvstrHex)
           strSign = Mid$(pvstrHex, lngIndex, 1)
           Select Case strSign
               Case 0 To 9
                   decValue = decValue * 16 + CDbl(strSign)
               Case "A"
                   decValue = decValue * 16 + 10
               Case "B"
                   decValue = decValue * 16 + 11
               Case "C"
                   decValue = decValue * 16 + 12
               Case "D"
                   decValue = decValue * 16 + 13
               Case "E"
                   decValue = decValue * 16 + 14
               Case "F"
                   decValue = decValue * 16 + 15
           End Select
       Next
       HexInDec = CStr(decValue)
    End Function
  4. Speichere die Datei als „Excel-Arbeitsmappe mit Makros“ (Dateiendung .xlsm).

  5. Verwende die Funktion in Deinem Arbeitsblatt:

    • Gib in einer Zelle ein: =HexInDec(A1) und ersetze „A1“ durch die Zelle, die Deinen Hex-Wert enthält.

Häufige Fehler und Lösungen

  • Problem: Die Umrechnung zeigt 1,77789E+14.

    • Lösung: Achte darauf, dass die Zelle, die das Ergebnis anzeigt, als „Text“ formatiert ist, um Überlaufprobleme zu vermeiden.
  • Problem: Die Funktion funktioniert nicht.

    • Lösung: Stelle sicher, dass Du den Code korrekt im VBA-Editor eingegeben hast und dass die Datei als Makro-fähige Arbeitsmappe gespeichert ist.

Alternative Methoden

  • Windows-Rechner: Du kannst auch den Windows-Rechner verwenden, um Hex zu Dezimal umzurechnen. Gehe zu den „Programmen“ und wähle „Rechner“, dann wechsle in den wissenschaftlichen Modus.

  • Python oder PowerShell: Wenn Du mit Programmierung vertraut bist, kannst Du ähnliche Umrechnungen in Python oder PowerShell durchführen, die flexibler mit größeren Zahlen umgehen können.


Praktische Beispiele

  • Beispiel 1: Umwandlung von A1B2C3 in Dezimal:

    • In Zelle A1: A1B2C3
    • In Zelle B1: =HexInDec(A1) → Ergebnis: 10512543
  • Beispiel 2: Umwandlung von 80335AF2586204 in Dezimal:

    • In Zelle A2: 80335AF2586204
    • In Zelle B2: =HexInDec(A2) → Ergebnis: 36085262724915716

Tipps für Profis

  • Verwende den Datentyp „Variant“ in VBA, um sicherzustellen, dass auch sehr große Zahlen korrekt behandelt werden.
  • Testen: Führe immer Tests mit verschiedenen Hex-Werten durch, um die Genauigkeit der Umrechnung zu prüfen.
  • Hexadezimal-Format: Nutze die Excel-Funktion DECIMAL() für kleine Hex-Werte, aber sei vorsichtig bei großen Werten, die über die Genauigkeit von Excel hinausgehen.

FAQ: Häufige Fragen

1. Wie kann ich die Funktion anpassen, um auch negative Hex-Werte zu unterstützen? Um negative Werte zu unterstützen, kannst Du vor der Umrechnung prüfen, ob der Hex-Wert mit einem Minuszeichen beginnt. Wenn ja, wandle ihn in einen positiven Wert um und füge beim Ergebnis das Minuszeichen hinzu.

2. Warum gibt Excel bei großen Zahlen nur wissenschaftliche Notation aus? Excel hat eine maximale Genauigkeit von 15 Dezimalstellen. Bei größeren Zahlen wird die Darstellung auf wissenschaftliche Notation umgeschaltet, was zu Verlusten führen kann. Verwende die Funktion in VBA, um diese Probleme zu umgehen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige