Avatar billede michaeljuul Nybegynder
04. april 2005 - 17:12 Der 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.
Avatar billede kabbak Professor
04. april 2005 - 17:23 #1
Fra Hjælpen:

Syntaks

DEC.TIL.BIN(tal;pladser)

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!.

Eksempler

DEC.TIL.BIN(9;4) er lig med 1001

DEC.TIL.BIN(-100) er lig med 1110011100
Avatar billede michaeljuul Nybegynder
04. april 2005 - 17:29 #2
Nu kan jeg ikke følge dig :-(
Hvad skal jeg skrive i A2 i stedet for =DEC.TIL.BIN(B2) For at få den til at vise den rigtige udregning?
Avatar billede kabbak Professor
04. april 2005 - 17:32 #3
Funktionen kan ikke vise tal er større end 511 og mindre end -512
Avatar billede michaeljuul Nybegynder
04. april 2005 - 17:36 #4
Ok. Men er det ikke muligt på andre måder at få den til det?.
Hvis nej. Så lav det som et svar :-)
Avatar billede kabbak Professor
04. april 2005 - 18:01 #5
jeg har prøvet at lave min egen, den går til 2047

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
Avatar billede michaeljuul Nybegynder
04. april 2005 - 18:02 #6
Jeg skal lige spise. Kommer tilbage bagefter og prøver.
Avatar billede michaeljuul Nybegynder
04. april 2005 - 18:39 #7
Sætter jeg det bare ind i arket programkode?
Avatar billede kabbak Professor
04. april 2005 - 18:40 #8
nej i et modul
Avatar billede michaeljuul Nybegynder
04. april 2005 - 18:42 #9
Ok prøver lige
Avatar billede michaeljuul Nybegynder
04. april 2005 - 18:46 #10
Det kan jeg ikke få til at virke. Har trykket ALT-F11 bagefter Ctrl-R
Og kopieret din kode ind i Modul1.
Avatar billede kabbak Professor
04. april 2005 - 18:49 #11
her er en til begge veje

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
Avatar billede kabbak Professor
04. april 2005 - 19:03 #12
udmaker lige
Application.Volatile

sådan
'Application.Volatile

eller slet dem
Avatar billede michaeljuul Nybegynder
04. april 2005 - 19:06 #13
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)
Avatar billede michaeljuul Nybegynder
04. april 2005 - 19:08 #14
Har udmarkeret Application.Volatile
Avatar billede kabbak Professor
04. april 2005 - 19:09 #15
der skal være 12 tegn i det binære til DecValue(B2)
de 2 funktioner er kun til brig for oversættelse af hinandens data
Avatar billede kabbak Professor
04. april 2005 - 19:12 #16
så dum indtastning skal se sådan ud for 10 000000001010
Avatar billede michaeljuul Nybegynder
04. april 2005 - 19:12 #17
Jeg tror vi stopper her. Jeg kan ikke finde ud af det :-(
Men du får da lige dine point, og tak for hjælpen.
Avatar billede kabbak Professor
04. april 2005 - 19:12 #18
så dum = så din
Avatar billede kabbak Professor
04. april 2005 - 19:15 #19
download et eksempel her

http://www.kabbak.dk/eksperten/bin.xls
Avatar billede michaeljuul Nybegynder
04. april 2005 - 19:16 #20
Forstod den godt ;-)
Avatar billede kabbak Professor
04. april 2005 - 19:21 #21
Tak for point ;-))

kar du kikket
Avatar billede michaeljuul Nybegynder
04. april 2005 - 19:21 #22
Har hentet den. Tak det ser fint ud.
Men hele idé med det jeg skulle lave. Var at det skulle være muligt at skrive et Dec tal, og så skriver skriver den selv både Hex og Bin tallene.
Se den her http://www.duerher.dk/updir/Grundforloeb/Elforsyning/talsystem.xls
Avatar billede michaeljuul Nybegynder
04. april 2005 - 19:24 #23
Og omvendt så man også kunne skrive Hex eller Bin også
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester