Dez nach Dual / Dual nach Dez



Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Dez nach Dual / Dual nach Dez
von: Carsten
Geschrieben am: 01.07.2002 - 20:44:19

Hallo Leute,
Ich weis, dass es diese Funktion in Excel gibt und nur über den AddIn-Manager aktiviert werden braucht, benötige sie aber als seperate Funktion.
Kann mir hierbei jemand helfen?

Gruss
Carsten


nach oben   nach unten

Zusatz: Dez nach Dual / Dual nach Dez
von: Carsten
Geschrieben am: 01.07.2002 - 21:00:11

Zusatz:

Ich benötige hierbei keine Formel- sondern eine VBA-Lösung.

Carsten

nach oben   nach unten

Re: Zusatz: Dez nach Dual / Dual nach Dez
von: Sigi E.
Geschrieben am: 01.07.2002 - 21:56:16

Hallo Casten,

folgende User-Funktionen für Zahlen bis 2.147.483.647:


Function DezimalNachBinär(Zahl As Long) As String
Dim Los As Boolean
Dim Aus As String
Dim Exp As Long
If Zahl <= (2 ^ 31) - 1 And Zahl = Int(Zahl) Then
    For Exp = 30 To Step -1
        If Zahl >= (2 ^ Exp) Then
            Aus = Aus & "1"
            Zahl = Zahl - (2 ^ Exp)
            Los = True
        Else
            If Los = True Then
                Aus = Aus & "0"
            End If
        End If
    Next Exp
Else
    Aus = "Geht nur bis 2.147.483.647!"
End If
DezimalNachBinär = Aus
End Function

Function BinärNachDezimal(BinärZahl As String) As Long
Dim As Long
Dim Ziff As String
Dim Zahl As Long
    For i = 1 To Len(BinärZahl)
        Ziff = Left(Right(BinärZahl, i), 1)
        If Ziff = "0" Or Ziff = "1" Then
            Zahl = Zahl + CLng(Ziff) * 2 ^ (i - 1)
        Else
            Zahl = ""
            Exit For
        End If
    Next i
BinärNachDezimal = Zahl
End Function


Gruß
Sigi
nach oben   nach unten

Re: Dez nach Dual / Dual nach Dez
von: Hans W. Hofmann
Geschrieben am: 01.07.2002 - 22:21:27

Vielleicht in VBA:

Function Dez2Bin(zahl As Long) As String
Dim digit As Long, mask As Long
digit = 0: mask = 1
Do
digit = (zahl And mask) / mask
mask = mask * 2
Dez2Bin = digit & Dez2Bin
Loop Until mask > zahl
End Function

Function Bin2Dez(bin As String) As Long
Dim digit As Long, mask As Long
mask = 1
For i = Len(bin) To 1 Step -1
Bin2Dez = Bin2Dez + CLng(Mid(bin, i, 1)) * mask
mask = mask * 2
Next
End Function


nach oben   nach unten

Danke Sigi, genau das wars. Danke o.T.
von: Carsten
Geschrieben am: 01.07.2002 - 22:33:23

'

nach oben   nach unten

Hallo Hans,
von: Carsten
Geschrieben am: 01.07.2002 - 22:37:14

Werde mit beiden Vorschlägen Experimentieren,
denke aber, dass ich mit beiden Lösungen zurecht komme.

Danke für die Hilfe
Gruss
Carsten


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Inputbox"