/ Forside/ Teknologi / Administrative / MS-Office / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
MS-Office
#NavnPoint
sion 18709
refi 14474
Klaudi 9389
Rosco40 5695
berpox 5456
dk 5398
webnoob 4919
Benjamin... 4870
o.v.n. 4637
10  EXTERMINA.. 4373
øre-afrunding i Excel
Fra : zakia1964
Vist : 7075 gange
200 point
Dato : 11-10-05 21:16

Jeg vil gerne have Excel til at lave en øre-afrunding - sådan at f.eks. kr. 13,35 bliver til kr. 13.25, at kr. 14,91 bliver kr. 15.00 og kr. 9,68 bliver kr. 9,75. Altså helt konkret at alle decimaler bliver rundet op eller ned til nærmeste hele, halve, kvarte eller trekvarte hundrede.
Er der nogen der kan hjælpe mig? eller kan det overhovedet lade sig gøre?
vh
Marianne

 
 
Kommentar
Fra : erling_l


Dato : 11-10-05 21:53

Hej Zakia

Har eksperimenteret med det, men excel vil ikke acceptere det.

Bruger du formuleringen "=AFRUND(A4;0)" returneres indholdet af a4 afrundet til heltal. Skifter du "0" med "1" kommer 1 betydende decimal. Men skifter man til 0,25 afrunder den bare som heltal - beklager...

Kommentar
Fra : hansen9


Dato : 11-10-05 22:02

Hvordan er det nu? Der findes et gratis toolkit til Excel hvor featuren ligger i. Så må man vist godtnok affinde sig med at det hedder "round". Prøv og søg hos Microsoft.

Kommentar
Fra : Eyvind


Dato : 11-10-05 22:31

Jeg har leget lidt og dette er ikke den færdige løsning
a1 12,35
b1 =HVIS(HØJRE(A2;2)>35;ERSTAT(A2;4;2;50);" ")

og det gælder kun til kr. 99,99 ellers skal der regnes med 3 cifre før , og
erstat skal skiftes med A2;5;2;

Kommentar
Fra : Eyvind


Dato : 11-10-05 22:48

rettelse
a1 12,35
b1 =HVIS(HØJRE(A1;2)>35;ERSTAT(A1;4;2;50);" ")

og det gælder kun til kr. 99,99 ellers skal der regnes med 3 cifre før , og
erstat skal skiftes med A1;5;2;

Kommentar
Fra : supertekst


Dato : 12-10-05 11:59

Her er lidt VBA-kode - Excel stilles på laveste sikkerhedsniveau - indtastningsceller er p.t. C1:C10 - nu kan du forsøge:

Kode
Private Sub worksheet_change(ByVal Target As Excel.Range)
Dim Beløb
On Error GoTo ingenBeløb

If Not Intersect(Target, Range("c1:c10")) Is Nothing Then
Target = decimalTilpas(Target.Value)
End If
Exit Sub

ingenBeløb:
End Sub
Private Function decimalTilpas(basisBeløb)
Beløb = CStr(basisBeløb)
x = InStr(Beløb, ",")

If x = 0 Then
Beløb = Beløb + ",00"
End If

kr = Left(Beløb, x - 1)
dec = Mid(Beløb, x + 1)

If dec <> "00" Then
decimalTilpas = beregnAfrund(kr, dec)
Else
decimalTilpas = Beløb
End If
End Function
Private Function beregnAfrund(kr, dec)
Dim øreListe(5), mindst, øre
øreListe(0) = 0
øreListe(1) = 25
øreListe(2) = 50
øreListe(3) = 75
øreListe(4) = 100

mindst = 100
øre = 0

For f = 0 To 4
diff = Abs(Val(øreListe(f)) - Val(dec))
If diff < mindst Then
mindst = diff
øre = øreListe(f)
End If
Next f

If øre = 100 Then
beregnAfrund = Val(kr) + 1
Else
beregnAfrund = Val(kr) + øre / 100
End If
End Function



Kommentar
Fra : Leo.pedersen


Dato : 12-10-05 13:58

Hej

Så tror jeg nok at jeg har en noget lettere løsning.

Hvis tallet står i celle A1, så kan man i en anden celle skrive:

=afrund(a1*4;0)/4

Inden i parantesen ganges med 4, hvorefter der foretages almindelig afrunding til helt kroner. Efter afrunding divideres igen med 4.

Venlig hilsen

Leo Lund
www.erhvervsbogforing.dk

Kommentar
Fra : zakia1964


Dato : 12-10-05 14:26

Det var lidt at vælge imellem!
Til erling_l - ja det har jeg nemlig også prøvet uden gode resultater.

Til hansen9 - jeg kan intet finde hos Microsoft - heller ikke round! Jeg har installeret alle tilføjelsesprogrammer!

Til Eyvind - jeg havde håbet at jeg kunne undgå mellemregninger på cellers indhold. Forslaget er ellers godt - men havde måske håbet at en formatering af cellerne var mulig.

Til Supertekst - Respekt! din kode virkede efter lidt tilpasninger hist og her - smart tænkt! Men det er måske lidt upraktisk at man skal klikke på de celler der indeholder tal som man ønsker onedrundet før de bliver onedrundet. Desuden opdagede jeg en lille ting. I en celle stod der 14,48. Ved klik blev tallet rettet til 14,5. Men da jeg kom til at klikke igen blev tallet rettet til 14. Der skete ikke noget i de celler hvor decimalerne var rettet til 25, 75 eller 00. Jeg er ikke stiv nok i VBA til at gennemskue hvor det går galt!!!
Men din løsning er et godt alternativ, såfremt det ikke er muligt at lave en celle formatering. En celles indhold kan nemlig formateres til brøk delt i fjerdedele: 14.35 bliver da til 14 1/4. Formateringskoden er # ?/4.
Jeg har i dag prøvet at tilføje min egen formateringskode, som jeg i min naivitet troede bare var en tilpasning af # ?/4. Jeg kan godt finde ud af at tilføje en ny formateringkode - men jeg kan bare ikke finde ud af at lave den rigtigt!

Kommentar
Fra : zakia1964


Dato : 12-10-05 14:28

Hov man skal da lige pase på hvad man skriver. Der skal stå "op eller nedrundet" der hvor de sjove hoveder sneg sig ind!!!!

Kommentar
Fra : zakia1964


Dato : 12-10-05 14:32

Hej Leo.pedersen!
Dit svar kom ind efter jeg havde skrevet. God formel - den er da til at forstå!!!
Men som skrevet ovenover. Kan man ikke lave en formateringskode der kan klare arbejdet??

Kommentar
Fra : Leo.pedersen


Dato : 12-10-05 14:36

Hej Marianne

Du kommentere ikke mit forslag, muligvis fordi du var ved at svare, hvorved mit forslag kommer til at stå før dit svar, så kan det nemt overses.

Hvis det blot er en ganske almindelig dansk afrunding til nærmeste 25 øre, så kan det gøres meget simpelt, således:

Hvis tallet står i celle A1, så kan man i en anden celle skrive:

=afrund(a1*4;0)/4

Dvs. inden i parantesen bliver tallet ganget med 4, hvorved man kan fjerne alle decimaler (afrund), når det er gjort, så dividere man med 4, for at komme til bage. Det er så "afrundet" til nærmeste 25 øre.

Venlig hilsen

Leo Lund
www.erhvervsbogforing.dk



Kommentar
Fra : Leo.pedersen


Dato : 12-10-05 14:38

jeg tror ikke der er en formateringskode, men hvis det tal som skal afrundes er resultatet af en anden beregning, så lad denne beregning stå i en søjle som du gør usynlig (format skjul"), og skriv så min formel i en synlig søjle.

Kommentar
Fra : zakia1964


Dato : 12-10-05 15:07

Hej Leo.pedersen!

Din formel virker hver gang! og det med at skjule kolonnen med de celler der skal afrundes er jeg helt med på. Det bliver nok min løsning hvis ikke der lige er én der kan lirke en formateringskode ud af ærmet!!! Jeg holder derfor spørgsmålet åbent lidt endnu! okay?

Kommentar
Fra : erling_l


Dato : 12-10-05 15:44

he HE lEO - du har da hjernen med - godt tænkt

Kommentar
Fra : Leo.pedersen


Dato : 12-10-05 16:37

Til Erling: Takker for de pæne ord. Har selv brugt formlen i mange år, og kan faktisk ikke huske om jeg selv fandt på den, eller fik den af en kollega.

Til Marianne: du holder bare spørgsmålet åbent, hvis der er en som har en formateringsløsning, så er jeg også selv interesseret i den.

Kommentar
Fra : supertekst


Dato : 12-10-05 16:40

Det er ikke meningen at der skal klikkes på de uredigerede tal - i mit forslag har jeg arbejdet med, at beløbet indtastes i sin basis-udgave, for derved at blive "afrundet" - men hvis betingelsen er, at beløbene eksistere i forvejen - skulle programmet nok ændres lidt.

Kommentar
Fra : Eyvind


Dato : 12-10-05 17:01

Udbygning af den fra Leo.
a1 - 2,35
a2 - 3,85
a3 - 1,32
a4 - 8,27
a5 - =AFRUND((SUM(A1:A4))*4;0)/4 [15,75]



Kommentar
Fra : zakia1964


Dato : 12-10-05 17:18

Hej Supertekst!
Jeg tastede først tallene ind efter jeg havde lavet VBA'en. Men når jeg tastede 14.48 ind i C1 så blev der ved med at stå 14,48 indtil jeg klikkede på tallet. Jeg tastede ellers tal ind i alle celler fra C1 til C10, men de blev først ændret ved klik!
Måske et versions-problem. Jeg har Excel 2000.

Accepteret svar
Fra : Rosco40

Modtaget 200 point
Dato : 12-10-05 19:54

Hvis Analysis ToolPak er aktiveret, kan du bruge funktionen:

=MAFRUND(A1;0,25)

Kommentar
Fra : supertekst


Dato : 13-10-05 09:41

Blot til orientering anvender jeg Office 2003

Kommentar
Fra : zakia1964


Dato : 13-10-05 21:38

Hej Rosco40!

Der var lige en formel jeg havde overset! Jeg synes ellers jeg havde været igennem dem alle. Den er jo som skabt til formålet. Men jeg vil stadig gerne høre om der er nogen der kan lave et brugerdefineret format der kan løse problemet, så derfor forøger jeg med 100 point.

Kommentar
Fra : xlEasy


Dato : 14-10-05 00:17

Hej zakia1964

Interessant spørgsmål. Her er et brugerdefineret format. Det løser dit problem, men det giver 2 årsager til, at du ikke kan bruge et brugerdefineret format (BFF). Her er formatet:

[<0,5]"0,00";[<1]"0,50";"1,00"
Kode
Tast Vis
0,1 0,00
0,5 0,50
0,8 0,50
1,1 1,00
500 1,00


Formatet fungerer sådan:

Kode
[<0,5]"0,00";[<1]"0,50";"1,00"
[Betingelse1]Format1;[Betingelse2]Format2;FormatEllers


Du kan altså bruge 2 betingelser med hvert sit format samt en instruks om et format, der bruges hvis ingen af betingelserne opfyldes.

1) Du kan ikke bruge BFF For at runde af skulle du bruge et format, der ser sådan ud (25øre afrunding - ikke øre afrunding):

Kode
[<0,13]format1;[<0,38]format2;[<63]format3;[<0,88]format4;


Du har brug for 4 betingelser, men kan kun bruge 2 + en diverse

2) Du kan ikke bruge en formel eller et format som betingelse. Det ville virke, hvis du kunne bruge

Kode
Formel som betingelse: [MROUND(A1;0,25)];format;...

Format sombetingelse: [<#,13]format1; etc.


... men det kan du ikke.

Hvis der mod forventning skulle findes en ren BFF-løsning, giver jeg også et point eller to. Jeg ville nok bruge løsningen med en ekstra kolonne.

Vh Bent

Kommentar
Fra : Leo.pedersen


Dato : 14-10-05 17:40

Hej Marianne

Har lige læst det igennem igen, og hvis det er resultatet af en beregning som skal afrundes, så kan min løsning også bruges uden den ekstra kolonne.

Det gøres ganske enkelt ved at indarbejde beregningen i mit forslag.

F.eks. hvis der i søjle A står antal, i søjle B står enhedspris og der så i søjle C skal stå pris ialt.

Data: A1 = 3 : A2 = 1 : A3 = 7 samt B1 = 0,05 : B2 = 0,1 : B3 =7,61
Så skal der i C1 stå en formel som hedder: =A1*B1 det bliver i C1 til 0,15, og hvis formlen kopieres ned i C2 og C3, bliver de til 0,1 og 53,27

Hvis der så i C1 istedet står =AFRUND(((A1*B1)*4);0)/4 så bliver C1 til 0,25, C2 til 0,00 og C3 til 53,25.

Ved godt at jeg har indsat en parantes for meget omkring beregningen, men den skal der være hvis beregningen er mere kompliceret.

God fornøjelse

Leo

Kommentar
Fra : Eyvind


Dato : 15-10-05 19:48

eller denne enkle (stadig bygning på den fra Leo.)
a1 - 2,35
a2 - 3,18
a3 - =AFRUND((SUM(A1+A2))*4;0)/4 [5,5]
eller
A1 - 2,35 B1 - =AFRUND((SUM(A1))*4;0)/4 .......2,25
A2 - 3,68 B2 - =AFRUND((SUM(A2))*4;0)/4 .......3,75
b3 - = sum (b1:B2) .........................6
I stedet for (A1) kan sættes forskellige regnestykker i resultatcellen.

A3 - =AFRUND((SUM(A1+A2))*4;0)/4 .......6



Kommentar
Fra : Rosco40


Dato : 17-10-05 13:05

Hvis du ønsker en VBA løsning virker denne.
Code
Private Sub Worksheet_Change(ByVal Target As Range)
'Dim As Range
If Not Intersect(Target, Range("F9:F38")) Is Nothing Then
Application.EnableEvents = False
For Each cell In Target
Target.Value = Round(cell.Value * 2, 0) / 2
Next
Application.EnableEvents = True

End If
End Sub

Kommentar
Fra : Rosco40


Dato : 17-10-05 13:09

Den viste afrunder til 0,50
Denne afrunder til 0,25
Code
Private Sub Worksheet_Change(ByVal Target As Range)
'Dim As Range
If Not Intersect(Target, Range("F9:F38")) Is Nothing Then
Application.EnableEvents = False
For Each cell In Target
Target.Value = Round(cell.Value * 4, 0) / 4
Next
Application.EnableEvents = True

End If
End Sub


Kommentar
Fra : xlEasy


Dato : 17-10-05 14:05

Der mangler et 'IKKE' i mit indlæg:

'Det løser IKKE dit problem, men det giver 2 årsager til, at du ikke kan bruge et brugerdefineret format (BFF).'

Det bedste bud indtil videre på en ikke-BFF løsning synes er fra Rosco40: =MAFRUND(A1;0,25) ud fra et dogme-synspunkt: Opfind ikke noget, der er opfundet i forvejen. Problemet med vba-løsningerne (som også er gode) er, at den oprindelige værdi forsvinder.


Kommentar
Fra : zakia1964


Dato : 17-10-05 14:16

Ja, der er efterhånden kommet flere bud. Til xlEasy - så kan jeg godt se din pointe. Et format kan ikke afrunde!
Leo.pedersen du kom med et forslag til en logisk formel der virker - men Rosco40 foreslog en formel der er skabt til formålet. Så jeg tror jeg lukker denne tråd nu og giver point til Rosco40.
Tak for hjælpen alle sammen!

Godkendelse af svar
Fra : zakia1964


Dato : 17-10-05 14:19

Tak for svaret Rosco40.
                        

Kommentar
Fra : Rosco40


Dato : 17-10-05 15:12

Jeg takker

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177424
Tips : 31962
Nyheder : 719565
Indlæg : 6407901
Brugere : 218877

Månedens bedste
Årets bedste
Sidste års bedste