04. april 2005 - 17:12Der er
22 kommentarer og 1 løsning
Decimal til Binær
Jeg har i A2 =DEC.TIL.BIN(B2) og i B2 81. Så skriver den 1010001 i A2. Og det er sådan set også fint nok. Men når jeg skriver 512 eller et højere tal skriver den i A2 #NUM. Hvad er der galt? Jeg har Analysis Toolpack inde.
Tal er decimalheltallet, der skal konverteres. Hvis tal er negativt, ignoreres pladser, og DEC.TIL.BIN returnerer et binært tal på 10 tegn (10 bit), hvor den mest betydningsfulde bit er fortegnsbitten. De resterende 9 bit er størrelsesbit. Negative tal repræsenteres ved brug af to's komplementnotation.
Pladser er det antal tegn, der skal anvendes. Hvis pladser udelades, anvender DEC.TIL.BIN det mindst mulige antal tegn. Pladser er nyttige til at placere 0'er (nuller) foran den returnerede værdi.
Bemærk!
Hvis tal < -512, eller hvis tal > 511, returnerer DEC.TIL.BIN fejlværdien #NUM!.
Hvis tal er ikke-numerisk, returnerer DEC.TIL.BIN fejlværdien #VÆRDI!.
Hvis DEC.TIL.BIN kræver mere end det antal tegn, der er angivet med pladser, returneres fejlværdien #NUM!.
Hvis pladser ikke er et heltal, afkortes det.
Hvis pladser er ikke-numerisk, returnerer DEC.TIL.BIN fejlværdien #VÆRDI!.
Hvis pladser er negativt, returnerer DEC.TIL.BIN fejlværdien #NUM!.
Public Function BinValue(Værdi As Range) As String Dim TempBin As String Application.Volatile Bin = Array(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024) Tempvalue = Abs(Værdi) TempBin = "" For i = 10 To 0 Step -1 If Tempvalue / Bin(i) >= 1 Then TempBin = TempBin & "1" Tempvalue = (Tempvalue - Bin(i)) Else TempBin = TempBin & "0" End If Next If Værdi < 0 Then TempBin = "1" & TempBin Else TempBin = "0" & TempBin End If BinValue = TempBin End Function
kaldes i en celle med =BinValue(B2), hvor B2 indeholder værdien
Public Function BinValue(Værdi As Range) As String Dim TempBin As String Application.Volatile Bin = Array(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024) Tempvalue = Abs(Værdi) TempBin = "" For i = 10 To 0 Step -1 If Tempvalue / Bin(i) >= 1 Then TempBin = TempBin & "1" Tempvalue = (Tempvalue - Bin(i)) Else TempBin = TempBin & "0" End If Next If Værdi < 0 Then TempBin = "1" & TempBin Else TempBin = "0" & TempBin End If BinValue = TempBin If Abs(Værdi) > 2047 Then BinValue = "For stort" End Function
denne kaldes med =DecValue(E1) hvor E1 indeholder bin værdien
Public Function DecValue(Værdi As Range) Dim TempDec As Long TempDec = 0 L = Len(Værdi.Value) Application.Volatile Bin = Array(1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1) For i = L To 2 Step -1 If Mid(Værdi, i, 1) = "1" Then TempDec = TempDec + Bin(i - 2) End If Next If Left(Værdi.Value, 1) = "1" Then TempDec = (TempDec - TempDec - TempDec) End If DecValue = TempDec End Function
Det kan jeg sgu ikke få til at virke :-( Hvis jeg skriver B2 10 Så får jeg godt nok et Binær tal 1010. Men i cellen hvor værdien er =DecValue(B2) skriver den 0
Hvis jeg skriver et Binær tal 1010 i B2 så får jeg -512 i cellen hvor værdien er =DecValue(B2)
Og omvendt så man også kunne skrive Hex eller Bin også
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.