Hallo Jan,
wahrscheinlich mußt Du Dir da eine eigene Funktion schreiben. In der Excel2007-Hilfe steht:
Syntax:
DEZINBIN(Zahl;Stellen)
Hinweise:
Ist Zahl 511, gibt DEZINBIN den Fehlerwert #ZAHL! zurück.
Gruß von Luschi
aus klein-Paris
AW: DEZINBIN mit 16 binären Stellen
25.04.2008 22:34:53
Neumann
Hallo Luschi.
Ich habe schon so etwas befürchtet. Hatte auch die Hilfe gelesen.
Danke.
Gruß Jan
AW: DEZINBIN mit 16 binären Stellen
25.04.2008 22:06:00
ransi
HAllo
Keine Ahnung was die 16 macht...
Sind das die Anzahl Stellen ?
Bis 32 stellen z.B.so: Tabelle1
A
1
1234561789
2
1001001100101011110101011111101
Formeln der Tabelle
Zelle
Formel
A2
=MyUmrechnung(A1;2)
Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Dieser Code gehört in ein Modul:
' ********************************************************************** ' Modul: Modul1 Typ: Allgemeines Modul ' **********************************************************************
OptionExplicit
PublicFunction MyUmrechnung(zelle, sys) Dim zahl AsDouble Dim s AsString zahl = zelle s = s & (zahl Mod sys) DoUntil Int(zahl / sys) = 0 zahl = Int(zahl / sys) s = s & (zahl Mod sys) Loop MyUmrechnung = StrReverse(s) EndFunction
ransi
Anzeige
Kleine Korrektur
25.04.2008 22:13:24
ransi
HAllo
Der eben gepostete Code läuft bei Werten <0 in eine Endlosschleife.
Hier ist die korrigierte Version:
' ********************************************************************** ' Modul: Modul1 Typ: Allgemeines Modul ' **********************************************************************
OptionExplicit
PublicFunction MyUmrechnung(zelle, sys) Dim zahl AsDouble Dim s AsString If zahl < 0 ThenExitFunction zahl = zelle s = s & (zahl Mod sys) DoUntil Int(zahl / sys) = 0 zahl = Int(zahl / sys) s = s & (zahl Mod sys) Loop MyUmrechnung = StrReverse(s) EndFunction
sys steht für das Zahlensystem in das umgerechnet werden soll.
Für binär also eine 2.
ransi
Anzeige
AW: Kleine Korrektur
25.04.2008 22:31:00
Neumann
Hallo ransi.
In der korrigierten Version läuft er bei kleiner 0 auch in eine Endlosschleife.
Aber grundsätzlich ist es das, was ich gesucht habe.
AW: Kleine Korrektur
25.04.2008 22:37:00
ransi
HAllo Neuman
Sorry !
Peinlich, Peinlich...
Korrektur einer Korrektur....
Kommt davon wenn man im Post rumeditiert.
So sollte es laufen:
OptionExplicit
PublicFunction MyUmrechnung(zelle, sys) Dim zahl AsDouble Dim s AsString zahl = zelle If zahl < 0 ThenExitFunction s = s & (zahl Mod sys) DoUntil Int(zahl / sys) = 0 zahl = Int(zahl / sys) s = s & (zahl Mod sys) Loop MyUmrechnung = StrReverse(s) EndFunction
ransi
Anzeige
AW: Kleine Korrektur
25.04.2008 22:43:27
Neumann
Hallo ransi.
Kein Problem. Das hat mir sehr weitergeholfen.
Jetzt habe ich schon mal die Hälfte meines Problems gelöst.
Danke, danke, danke.
Gruß Jan
AW: Kleine Korrektur
26.04.2008 12:22:49
Reinhard
Hi Jan,
mal ein andrer Ansatz,
=DEZINBIN(GANZZAHL(A3/512);8)&DEZINBIN(REST(A3;512);8)
ich weiß, da müssen noch paar WENNs rein je nach Zahl, ist nur so als Gedanke
Gruß
Reinhard
Das kann man mit Dezimalzahlen nicht...
27.04.2008 00:10:00
Luc:-?
...machen, nur mit Oktal- und Hexadezimalzahlen, Reinhard.
Denn, wenn ich dann über dein Ergebnis eine mit den Potenzen von 2 gewichtete Quersummenfkt laufen lasse, kommt bestimmt was anderes raus als bei der anderen Lösung.
Ein paar WENNs reichen da nicht, es sei denn, du willst ziffernweise verschlüsseln, was einen hexadezimalen "Anstrich" hätte. Aber dafür ist dein Ansatz ja nicht gedacht... ;-)
Gruß Luc :-?
Anzeige
Doch das geht mit Dezimalzahlen
27.04.2008 15:27:59
Reinhard
Hallo Luc,
ich habe jetzt die Zahlen von 0 bis 65535 getestet, die Formel funktioniert:
=DEZINBIN(GANZZAHL(A1/512);7)&DEZINBIN(REST(A1;512);9)
Überprüft habe ich es durch die Funktion von Rainer.
Gruß
Reinhard
AW: Doch das geht mit Dezimalzahlen
27.04.2008 20:59:00
Neumann
Hallo Reinhard.
Danke, das hilft mir sehr weiter.
Vielen Dank.
Gruß Jan
Ja, du hast recht! Hatte nur das "&"...
01.05.2008 01:10:00
Luc:-?
...gesehen und nicht auf die Rechnung geachtet, Reinhard.
Allerdings geht's mit VBA noch weiter. Mein Maximum liegt bei einer Dezimalzahl bei deutlich >2 Mio.
Gruß Luc :-?
AW: DEZINBIN mit 16 binären Stellen
26.04.2008 10:51:45
Sigi
Hallo Jan,
mit folgender VBA-Funktion für positive bis zu 15-stellige Zahlen (Grenze der Excel-Signifikanz) geht's:
Function DEZ2BIN_Stellen(Zahl As Double, Stellen As Long) As String
Dim Aus As String
Dim Exp As Long
If Zahl = (2 ^ Exp) Then
Aus = Aus & "1"
Zahl = Zahl - (2 ^ Exp)
Else
Aus = Aus & "0"
End If
Next Exp
Else
Aus = "#WERT!"
End If
DEZ2BIN_Stellen = Aus
End Function
Hallo Erich.
Danke. Gute Formel.
Auch genau das, was ich gesucht habe. Und danke für den Tip.
Gruß Jan
Ich danke Euch
27.04.2008 21:08:00
Neumann
Ich danke Euch allen für die Vorschläge und Hilfen.
Ich konnte mit Eurer Hilfe mein Problem lösen.
Super, daß das mit der Hilfe im Forum so toll klappt.
Vielen Dank.
Gruß Jan