Avatar billede lunddata Nybegynder
20. november 2005 - 13:38 Der er 26 kommentarer og
2 løsninger

Betinget formatering

Er det muligt automatisk at ændre formatet på tal i celle/celler svarende til eksempelvis  det antal decimaler jeg skriver i en bestemt celle.

F.eks skal værdien af celle a2 og b2 have antallet af decimaler på 2 når jeg i celle c2 skriver 2
Avatar billede tvc Seniormester
20. november 2005 - 15:06 #1
Hej

Jeg mener ikke du kan gøre det ved en funktion i betinget formatering. Du kan gøre det ved at lave funktionen i VBA.

Jeg har nedenfor udarbejdet et lille eksempel til dig som løser dit problem for celle A2 og B2 ved ændring af celle C2.

Indsæt nedenstående kode i dit arkmodul.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Range("C2").Value
    Case 1
        Range("A2:B2").NumberFormat = "#,##0.0"
    Case 2
        Range("A2:B2").NumberFormat = "#,##0.00"
    Case 3
        Range("A2:B2").NumberFormat = "#,##0.000"
    Case 4
        Range("A2:B2").NumberFormat = "#,##0.0000"
    Case 5
        Range("A2:B2").NumberFormat = "#,##0.00000"
    Case Else
        MsgBox "Du kan ikke indsætte mere end 5 decimaler i denne funktion!"
        Range("A2:B2").NumberFormat = "#,##0.00000"
End Select
End Sub
Avatar billede tvc Seniormester
20. november 2005 - 15:13 #2
Hvis du vil kunne styre det lidt mere smart, så anvend nedenstående i dit arkmodul.

I dit ark navngiver du celle som skal styre antallet af decimaler "decAntal".

Herefter markerer du alle de celler/områder (hold Ctrl. nede og vælg) og navngiv området "maal".

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Range("decAntal").Value
    Case 1
        Range("maal").NumberFormat = "#,##0.0"
    Case 2
        Range("maal").NumberFormat = "#,##0.00"
    Case 3
        Range("maal").NumberFormat = "#,##0.000"
    Case 4
        Range("maal").NumberFormat = "#,##0.0000"
    Case 5
        Range("maal").NumberFormat = "#,##0.00000"
    Case Else
        MsgBox "Du kan ikke indsætte mindre end 1 eller mare end 5 decimaler i denne funktion!"
        Range("maal").NumberFormat = "#,##0.00000"
End Select
End Sub
Avatar billede tvc Seniormester
20. november 2005 - 15:14 #3
For at komme ind i Visual Basic til Excel skal du trykke Alt + F11.
Avatar billede lunddata Nybegynder
20. november 2005 - 15:47 #4
Det ser meget rigtigt ud, men problemet er at jeg ikke har meget forstand på Visual Basic.
Jeg har forsøgt at sætte koden ind og hvad så?
Avatar billede lunddata Nybegynder
20. november 2005 - 15:55 #5
Kunne jeg evt. lokke dig til at sende en test?
Avatar billede lunddata Nybegynder
20. november 2005 - 16:47 #6
Nevermind, jeg har fundet ud af det. Din løsning virker perfekt!
TAK!
Lægger du lige et svar?
Avatar billede lunddata Nybegynder
20. november 2005 - 16:56 #7
Virker godt nok lige bortset fra en helt anden prolematik, følgende + regnestykke giver en forkert afrunding:
2,132 + 39,286 = 41,417
Avatar billede kabbak Professor
20. november 2005 - 17:35 #8
prøv lige at tjekke om der ikke er flere end de 3 decimaler
Avatar billede kabbak Professor
20. november 2005 - 17:36 #9
Excel regner jo på alle decimaler, uanset om du kan se dem
Avatar billede kabbak Professor
20. november 2005 - 17:38 #10
2,1316 + 39,2856 = 41,417

men vises som
2,132 + 39,286 = 41,417. når du kun har 3 decimaler
Avatar billede lunddata Nybegynder
20. november 2005 - 17:49 #11
Spørgsmålet er så hvordan jeg får det rigtige output (visning)?
Avatar billede kabbak Professor
20. november 2005 - 18:14 #12
hvis du sætter denne i C kolonnen, får du det antal decimaler der er i A kolonnen

=LÆNGDE(A1)-(LÆNGDE(HELTAL(A1))+1)
Avatar billede lunddata Nybegynder
20. november 2005 - 18:19 #13
Ikke forstået i forhold til mit oprindelige og første spørgsmål
Avatar billede kabbak Professor
20. november 2005 - 18:28 #14
du behøver ikke at sætte den i C kolonnen, men den kan give dig et fingerpeg om hvor mange decimaler der er.
Avatar billede tvc Seniormester
20. november 2005 - 20:52 #15
Her er et svar!

Når jeg indtaster 2,132 i celle A2 og 39,286 i celle B2 og jeg i celle D2 skriver "=A2+B2" får jeg i celle D2 resultatet 41,418.

Prøv som kabbak siger at undersøge om der i dine beregninger ikke er mere end 3 decimaler eksempelvis at dine tal faktisk ser således ud 2,1316 og 39,2858 dette giver nemlig resultatet 41,417.

Hilsen

TVC
Avatar billede lunddata Nybegynder
20. november 2005 - 21:15 #16
Mit problem er at jeg ved hjælp af slump frembringer en række (et helt opgaveark til elever) med tilfældige tal indenfor et bestemt interval


celle b12 =(SLUMP()*($I$3-$H$3)+$H$3)
celle b13=(SLUMP()*($I$4-$H$4)+$H$4)
i celle b14 skriver eleven svaret
Facitliste er angivet i et ark for sig og løsningen på ovenstående er:
i celle b47 står der =B12
i celle b48 står der =B13
i celle b49 er angivet formlen =SUM(B47:B48)

alle tal er i henhold til mit første spørgsmål dynamiske og ændrer fint antal decimaler ud fra tvc´s anvisning, men resultatet i celle b49 afrundes ikke altid korrekt.
Måske er vi derhenne hvor jeg er i gang med et nyt spørgsmål i forhold til det oprindelige og jeg stiller gerne flere point på højkant!
Avatar billede lunddata Nybegynder
20. november 2005 - 21:17 #17
PS: Eleven skriver ikke i regnearket men på papir
Avatar billede kabbak Professor
20. november 2005 - 21:23 #18
=mround((SLUMP()*($I$3-$H$3)+$H$3);0,001)

afrunder til 3 decimaler
Avatar billede lunddata Nybegynder
20. november 2005 - 22:26 #19
Jamen, så er ideen med at fleksibiliteten med at angive antallet af decimaler vel væk.
Det jeg har brug for er at kunne lave forskllige regneark med
0 decimaler
1 decimal
2 decimaler
....til og med 5 decimaler
Avatar billede kabbak Professor
20. november 2005 - 22:29 #20
0,001 du kan jo rette i denne

0,1 = 1 decimal
0,01 = 2 decimal
0,001 = 3 decimal

o.s.v.
Avatar billede lunddata Nybegynder
20. november 2005 - 22:38 #21
Jeg er altså ikke helt med
Avatar billede b_hansen Novice
21. november 2005 - 08:25 #22
Kabbaks formel må vel kunne bruges sådan:
=mround((SLUMP()*($I$3-$H$3)+$H$3);A1)

Hvor du i A1 angiver det antal decimaler, du ønsker, eksempelvis 0,1 0,001 o.l. Det er vist også det, Kabbak forsøger at beskrive.
Avatar billede kabbak Professor
21. november 2005 - 08:29 #23
Ikke helt B_hansen:
=mround((SLUMP()*($I$3-$H$3)+$H$3);A1)
så skal det være

=AFRUND((SLUMP()*($I$3-$H$3)+$H$3);A1)
Avatar billede kabbak Professor
21. november 2005 - 08:31 #24
I stedet for A1, henvises til C kolonnen hvor antal decimaler skrives, så skulle det køre automatisk
Avatar billede kabbak Professor
21. november 2005 - 08:33 #25
B_hansen > du havde ret, men det er nemmere med den anden
Avatar billede b_hansen Novice
21. november 2005 - 08:38 #26
Kabbak> Enig. Den krølle havde jeg lige overset.
Avatar billede lunddata Nybegynder
21. november 2005 - 11:46 #27
Så er jeg med.
TUSIND TAK for hjælp.
Jeg har fordoblet point for de yderst velkvalificerede indlæg.
Kabbak lægger du også lige et svar..
Avatar billede kabbak Professor
21. november 2005 - 11:51 #28
et svar ;-))
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