Ich muss grosse Zahlen von Hex nach Dec konvertieren
Habe hier ein Makro gefunden, das funktioniert.
Jetzt möchte ich auch von Dec nach Hex konvertieren
kann mir da jemand einen Code angeben
https://www.herber.de/bbs/user/96612.xlsm
vielen Dank
Pepi
Public Function DecToHex(ByVal Dec As Double) As String
Dim i As Long, j As Long
Dim x As Long
Const Hexziffer As String = "0123456789ABCDEF"
For i = 0 To 14
If 16 ^ i > Dec Then Exit For
Next
For j = i - 1 To 0 Step -1
x = Dec \ 16 ^ j
DecToHex = DecToHex & Mid$(Hexziffer, x + 1, 1)
Dec = Dec - x * 16 ^ j
Next
End Function
beachte jedoch, das Excel bei Double nur mit 15 Signifikanten Stellen rechnet.
Public Function DecToHexStr(Dec As Double) As String
Dim Rest As Double
Dim strHEX As String
Dim Nachkomma As Double
Dim Test As Long
Rest = Dec
Do
Nachkomma = (Rest / 16) - VBA.Fix(Rest / 16)
Test = Round(Nachkomma * 16, 0)
Select Case Test
Case 0 To 9: strHEX = Format(Test, "0") & strHEX
Case 10: strHEX = "A" & strHEX
Case 11: strHEX = "B" & strHEX
Case 12: strHEX = "C" & strHEX
Case 13: strHEX = "D" & strHEX
Case 14: strHEX = "E" & strHEX
Case 15: strHEX = "F" & strHEX
End Select
Rest = (Rest - Test) / 16
If Rest
Um große Zahlen von Hex nach Dezimal und umgekehrt in Excel zu konvertieren, kannst du folgende Methoden verwenden:
Verwendung der Excel-Funktionen: Ab Excel 2010 kannst du die integrierten Funktionen DEZINHEX() und HEXINDEZ() nutzen.
=DEZINHEX(A1)=HEXINDEZ(A1)VBA-Funktionen: Du kannst auch VBA verwenden, um die Konvertierung durchzuführen. Hier ist ein Beispiel für eine Funktion, die Dezimal in Hex umwandelt:
Public Function DecToHex(ByVal Dec As Double) As String
Dim i As Long, j As Long
Dim x As Long
Const Hexziffer As String = "0123456789ABCDEF"
For i = 0 To 14
If 16 ^ i > Dec Then Exit For
Next
For j = i - 1 To 0 Step -1
x = Dec \ 16 ^ j
DecToHex = DecToHex & Mid$(Hexziffer, x + 1, 1)
Dec = Dec - x * 16 ^ j
Next
End Function
Fehlerbehebung: Beachte, dass Excel bei der Verwendung von Double nur bis zu 15 signifikante Stellen genau rechnet. Größere Zahlen können gerundet werden.
Fehler: Ergebnisse stimmen nicht überein
Wenn du von Hex nach Dezimal und zurück konvertierst, kann es sein, dass die Ergebnisse nicht übereinstimmen. Dies liegt daran, dass Excel bei großen Zahlen (über 15 signifikante Stellen) runden kann. Achte darauf, dass deine Werte innerhalb der Grenzen liegen.
Lösung: Alternative Konvertierungsmethoden
Wenn du mit großen Zahlen arbeitest, ziehe in Erwägung, ein Add-In zu verwenden, das speziell für solche Umwandlungen entwickelt wurde.
Add-Ins nutzen: Es gibt verschiedene Add-Ins, die eine genauere Umwandlung von Hexadezimal in Dezimal und umgekehrt ermöglichen. Suche nach einem, das zu deiner Excel-Version passt.
Online-Tools: Es gibt auch viele Online-Tools, die eine einfache Umwandlung von Hex zu Dez und umgekehrt ermöglichen. Diese können nützlich sein, wenn du keine VBA-Programmierung verwenden möchtest.
Beispiel 1: Umwandlung einer großen Hex-Zahl:
80335AF2586204=HEXINDEZ("80335AF2586204") ergibt Dezimal: 36085262724915700Beispiel 2: Umwandlung einer Dezimalzahl in Hex:
36085262724915700=DEZINHEX(36085262724915700)Diese Beispiele zeigen, wie du mit den integrierten Excel-Funktionen und VBA die Umwandlungen durchführen kannst.
HEX2DEC und DEC2HEX Funktionen in VBA, um die Umwandlungen noch einfacher zu gestalten.38D7EA4C67FFF sein.CLng Funktion verwenden, um sicherzustellen, dass deine Umwandlungen korrekt durchgeführt werden.1. Wie kann ich große Hexadezimalzahlen in Excel konvertieren?
Verwende die Funktionen DEZINHEX() und HEXINDEZ() in Excel oder schreibe eine VBA-Funktion, um die Konvertierung durchzuführen.
2. Warum stimmen die Ergebnisse bei der Umwandlung nicht überein?
Excel hat eine Beschränkung von 15 signifikanten Stellen bei Dezimalzahlen. Wenn du größere Zahlen verwendest, kann es zu Rundungsfehlern kommen.
3. Gibt es eine Möglichkeit, die Genauigkeit bei der Umwandlung zu erhöhen?
Für genauere Ergebnisse bei großen Zahlen kannst du ein spezialisiertes Add-In verwenden oder externe Software zur Umwandlung nutzen.