Anzeige
Archiv - Navigation
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
516to520
516to520
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

BIN2DEC mit langen Zahlen (groesser 10 Bit)

BIN2DEC mit langen Zahlen (groesser 10 Bit)
17.11.2004 04:30:43
Rascal
Moechte eine 22 oder gar 36 Bit lange Binaerzahl nach Decimal umwandeln, aber Excel kann mit so grossen Zahlen nicht umgehen (nur max. 10 Bit).
Weiss jemand eine Loesung, wenn noetig ueber eine mathematischen Funktion?
Beispiel:
Zelle A1: 1000111101001001110001
Zelle A2: =BIN2DEC(A1)
Ergibt z.Zt. #NUM Fehler (#Zahl in Deutsch).
Danke,
Rascal

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
Harald
Hallo Rascal,
am einfachsten wohl mit einer VBA Funktion:

Function MyBin2Dec(x As String) As Long
Dim rest As String
Dim temp As Long
Dim i As Integer
rest = x
temp = 0
For i = 0 To Len(x) - 1
temp = temp + 2 ^ i * Right(rest, 1)
rest = Left(rest, Len(rest) - 1)
Next i
MyBin2Dec = temp
End Function

Gruß Harald
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
17.11.2004 11:57:21
Rascal
Danke, aber gibt es eine Loesung ohne VBA? Hab' da naemlich keine Ahnung von ...
Rascal
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
Harald
Hallo Rascal,
im Prinzip ja, aber...
Ich hab's mal damit versucht, erst mittels TEIL() aus der Binärzahl jeweils 10 Stellen zu extrahieren, diese mittels BIN2DEC umzuwandlen und entsprechend wieder zusammenzusetzen. Das klappt auch, aber es wird schwierig, das so zu gestalten, dass es unabhängig von der Stellenzahl ist. - nicht unmöglich, aber eine Herausforderung -
Um meine Funktion anzuwenden brauchst Du wenig Ahnung von VBA. Öffne einfach den VBA-Editor (Extras &gt Makros &gt Visual Basic Editor) und kopiere die Funktion dort in das sich öffnende Blatt. Das war's schon. Du kannst jetzt den Editor wieder schließen und die Funktion wie eine eingebaute Funktion benutzen.
Gruß Harald
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
18.11.2004 04:22:11
Rascal
Ich hab's mal damit versucht, erst mittels TEIL() aus der Binärzahl jeweils 10 Stellen zu extrahieren, diese mittels BIN2DEC umzuwandlen und entsprechend wieder zusammenzusetzen. Das klappt auch, aber es wird schwierig, das so zu gestalten, dass es unabhängig von der Stellenzahl ist. - nicht unmöglich, aber eine Herausforderung -
Die Stellenanzahl ist fest: Ich zerlege eine 255bit Binaerzahl in mehrere Felder (zwischen 1 und 36 bit), die Anordnung der Felder und die Laenge der Bit in jedem Feld sind festgelegt. Kannst du mir die Formel posten?
Um meine Funktion anzuwenden brauchst Du wenig Ahnung von VBA. Öffne einfach den VBA-Editor (Extras - Makros - Visual Basic Editor) und kopiere die Funktion dort in das sich öffnende Blatt. Das war's schon. Du kannst jetzt den Editor wieder schließen und die Funktion wie eine eingebaute Funktion benutzen.
Hm, ein Blatt hat sich nicht automatisch geoeffnet - habe es aber irgendwie geschaft, die Funktion zu speichern (Excel meldet vorhandenes Makro beim Oeffnen der Datei).
Wenn ich in die Zelle A2 allerdings "=MyBin2Dec(A1)" schreibe, ergibt sich ein #NAME Fehler. Hab ich was vergessen/uebersehen? Oder wird das Makro anders eingefuegt?
Danke schonmal,
Rascal
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
Harald
Hallo Rascal,
bei fester Stellenzahl wird's einfacher. Hier der Ansatz, die Erweiterung auf 255 Binärstellen überlasse ich Dir:
=2^4*bin2dec(TEIL(A1;1;8))+2^3*bin2dec(TEIL(A1;9;8))+2^2*bin2dec(TEIL(A1;17;8))+2^1*bin2dec(TEIL(A1;25;8))+2^0*bin2dec(TEIL(A1;33;8))
Im übrigen wirst Du arge Probleme damit haben, eine 255Bit Binärzahl in Excel überhaupt vernünftig als Dezimalzahl darstellen zu können. Selbst der Datentyp Long mit 64 Bit reicht dazu nicht aus.
Gruß Harald
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
18.11.2004 10:37:46
Rascal
Hi,
danke, aber ich glaube, deine Formel stimmt nicht so ganz. Jedenfalls stimmen die Ergebnisse nicht und "streiken" schon bei 14 bit. ;-)
Aber ich habe es aber aufgrund deines Vorschlages geschafft, das Problem dennoch zu loesen (ueber Umwege sowie mit ein wenig Ausprobieren und viel Nachdenken):
Fuer 22bit:
A1=1000111101001001110001
A2=MID(A1,1,8)
A3=MID(A1,9,8)
A4=MID(A1,17,8)
B2=16384*BIN2DEC(A2)
B3=64*BIN2DEC(A3)
B4=BIN2DEC(A4)
B5=SUM(B2:B4)
Fuer 24bit:
A1=000010101111101110111010
A2=MID(A1,1,8)
A3=MID(A1,9,8)
A4=MID(A1,17,8)
B2=65536*BIN2DEC(A2)
B3=256*BIN2DEC(A3)
B4=BIN2DEC(A4)
B5=SUM(B2:B4)
usw.
Wie man erkennt, verdoppelt sich der Multiplikator fuer jedes zusaetzliche Bit.
Uebrigens wollte ich nicht die ganzen 255 bit nach DEC umwandeln, nur die einzelnen Felder mit Laengen zwischen 1 und max. 36 bit. In der Zahl verstecken sich uebrigen GPS Koordinaten, wobei die Felder Datum, Zeit, Geschwindigkeit usw. festlegen. Die Anordung (Sequenz) der Felder und Anzahl der Bit (pro Feld) ist aber gluecklicherweise festgelegt.
Vielen Dank jedenfalls,
Rascal :)
Anzeige

11 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige