vba formule afronden op twee decimalen

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
926
Beste Helpmij'ers,

Ik heb een formule die een juiste berekening maakt, echter teveel decimalen genereert waardoor ik uiteindelijk een afrondingsverschil krijg. Mijn vraag is; waarmee kan ik onderstaande formule voorzien zodat deze twee decimalen achter de komma genereert?

Code:
Range("k" & Target.Row) = ((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value))

nb Het voldoet niet wanneer ik excel in stel op twee decimalen.

Alvast bedankt.

M.vr.gr.
Robert Smidt
 
Code:
[COLOR=#3E3E3E]Range("k" & Target.Row)[/COLOR] = format(.......................................,"0.00")
 
Hartelijk bedankt,

Echter heb ik het wellicht verkeerd in de formule gezet waardoor deze niet functioneert;

Code:
Range("k" & Target.Row) = format ((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value)), “0.00")

Wat heb ik fout gedaan?

Alvast bedankt

Robert
 
Plaats het bestand eens zodat we kunnen zien wat er speelt.
 
Het is een een heel erg groot bestand en kan wel de overige regels meesturen. De foutmelding is overigens (Compileerfout: Verwacht: instructie-einde)

Code:
'Btw-bedrag berekenen incl. btw-prijs
            If Range("I" & Target.Row) <> "" And Range("J" & Target.Row) = "" Then
                'Range("k" & Target.Row) = ((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value))
                Range("k" & Target.Row) = format ((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value)), “0.00")
                Range("j" & Target.Row) = (Range("I" & Target.Row) - (Range("k" & Target.Row)))
            End If

Ik denk dat de formule op een klein detail na juist is en zal er wellicht nog ergens een "(" of ")" tussen geplaatst moeten worden.

Hopelijk dat je voldoende informatie hebt.
 
Dit moet je zelf kunnen:

aantal haakjes openen moet gelijk zijn aan het aantal haakjes sluiten. Je hoeft niet eens tot 10 te kunnen tellen.
Kijk ook eens naar de aanhalingstekens.
 
Met de haakjes is nu gelukt, echter rekent de formule het bedrag niet meer uit maar maakt er 0,00 van.

Code:
Range("k" & Target.Row) = Format(Range("k" & Target.Row) = ((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value)), "0.00")
 
Helaas ben ik niet helderziend.
 
Ik heb een fout gemaakt en bedoel:

Code:
Range("k" & Target.Row) = Format(((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value)), "0,00")

Alleen maakt deze er nu hele euro's van en geen decimalen achter de komma. Voorbeeld: 21% van €300 is €52,07. Normaal rekent het systeem dat ook zo uit, maar met bovenstaande formule maakt het systeem er €52,00 van. (300 / 121 * 21 = 52,06)

Als ik de komma vervang door een punt ("0.00"), rekent deze de formule wel goed uit, alleen maakt deze er dan alfanumeriek van. Hoe herstel ik dat?
 
Ik denk dat ik het hier maar bij laat zonder voorbeeldbestand.
Code:
Range("k" & Target.Row) = formatcurrency(((Range("I" & Target.Row) / [Btwhoogformule].Value) * (100 * [Btwhoogtarief].Value)))
 
Het spijt mij dat het programma te groot is en begrijp volledig dat het daardoor onmogelijk wordt.

De formule werkt eigenlijk goed, met dat verschil dat hij vreemd genoeg een alfanumeriek van maakt i.p.v. een numeriek. Ik zal kijken of hier op het forum iets kan vinden over het omzetten van een alfanumeriek naar een numeriek. Dan is mijn probleem helemaal opgelost.

In ieder geval super bedankt voor de hulp.

Groeten, Robert
 
Een voorbeeld-bestand is nooit te groot.
Probeer het anders eens als .xlsb extensie te plaatsen.
 
Code:
Sub M_snb()
    MsgBox Round(12 / 400, 2)
End Sub

Als de opmaak van de cel waarheen het resultaat geschreven wordt is ingesteld op 'general', interperteert Excel zelf wel een tekenreeks als getal.
Het maakt dus niets uit of het resultaat een string is (zoals met 'format') of een getal, zoals met 'round'.
De celopmaak is hier de crux.
 
Laatst bewerkt:
Heb een bestand bijgevoegd

Het was even puzzelen, maar het is mij gelukt om er een los bestand van te maken.

Als je kijkt in kolom K (13) daar staat 52,07 als een alfanumeriek. Hij neemt het totaal in rij 12 ook niet over en bij de andere kolommen wel.Bekijk bijlage Test 1.xlsm
 
Hoewel Excel er voor ontworpen is om dit soort zaken juist met formules af te handelen, kan het met:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 9 Then
    Application.EnableEvents = False
    
    If Target <> "" And Target.Offset(, 1) = "" Then Target.Offset(, 1).Resize(, 2) = Array(100 * Target / 121, 21 * Target / 121)
    
    Application.EnableEvents = True
 End If
End Sub

Zorg ervoor dat het numberformat van de cellen in kolom 10(J) en 11(K) hetzelfde is als in kolom 9 (I)
 
Laatst bewerkt:
Helaas werkt het nog niet naar wens.

In de cel zet deze het bedrag weliswaar juist, maar in de formulebalk laat deze nog steeds een bedrag met 12 cijfers achter de komma zien i.p.v. 2 cijfers. Hierdoor krijg ik op gegeven moment in de afronding een fout.

Ik heb de kolommen I, J en K identiek ingesteld met twee decimalen achter de komma.
 
Als je ontevreden bent over het resultaat na afronding moet je niet afronden.
Als je persé wil afronden, verbaas je dan niet over het resultaat: dat is inherent afwijkend van het resultaat vóór afronding.

Ontwerpen is vooruit denken.
 
Laatst bewerkt:
Doordat hij nu ook kolom J op dezelfde wijze berekend komt het uiteindelijk toch goed. Heren, enorm bedankt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan