Opgelost Afwijkingen optellen / aftrekken met VBA in Excel

Dit topic is als opgelost gemarkeerd

fbijltje

Gebruiker
Lid geworden
23 mei 2004
Berichten
268
VBA / Excel
Ik heb dit in een for next lus staan in een macro:
ActiveSheet.Cells(x, 12).Value = ActiveSheet.Cells(x + 1, 11).Value - ActiveSheet.Cells(x, 11).Value

Bij b.v. x = 3
In r4 (x+1), c11 staat 4678,657
In r3 (x), c11 staat 4672,777
In r3(x,) c12 komt te staan 5,88000000000011

De getallen waarvan het verschil genomen moet worden hebben slechts 3 cijfers achter de komma. Het verschil kan dus alleen maar 3 cijfers achter de komma hebben. In de cel zelf zijn er 3 decimalen zichtbaar maar dat heb ik zelf aangegeven.
Er moet gerekend worden met de getallen...
Waardoor komt dit verschil, hoe kan ik dit in orde maken?

Krijg geen foutmeldingen, de getallen komen van een geimporteerde CSV bestand (eerste 6 kolommen, text format) waar in kolom1 de getallen met een punt staan.
Met b.v via ActiveSheet.Cells(x, 11).Value = ActiveSheet.Cells(x, 1).Value worden de getallen, onder een bepaalde voorwaarde overgezet van kolom 1 naar kolom 11. De punt in het getal in kolom 1 wordt een komma in het getal in kolom 11.

Bij voorbaat dank,
Frans
 
@Mde:
...begrijp ik...kreeg volgende plaatje van kolom 11 en kolom 12 met de getallen weergegeven met 20 decimalen.

kolom11-12.jpg
 
Met een voorbeeld bestand wordt een Excel document bedoelt.
Daarnaast kijkt Excel naar max. 15 cijfers achter de komma.
 
@edmoor: Snap ik maar veel persoonsgegevens, vandaar. Ga ik er uithalen...als ik meer tijd heb.

Als je kijkt naar de onderste rij in de afbeelding, linker kolom.
--> Cells (33, 11) --> 4840,576 (cel: K33)
Cel erboven:
-->Cells (32, 11) --> 4832,979 (cel: K32)
In de cel daar rechts ervan, Cells( 32, 12) (L32) staat het verschil berekent met ActiveSheet.Cells (33, 11).Value - ActiveSheet.Cells (32, 11).Value
Reken ik het uit met een rekenmachine dan is de uitkomst, exact: 7,597
Waardoor ontstaat het verschil? En is dit behelpen?
Als ik doe =K33-K32 in cel L32 dan ook 7,59699999999975000000
Als ik de getallen apart in tik in een cel, b.v. W35 dan krijg ik ook 7,59699999999975000000
Ook na het opnieuw starten van excel met een leeg blad en dan intikken geeft 7,59699999999975000000
...niet 7,59700000000000000000. ...ook niet met 15 cijfers achter de komma.
Dus ook zonder VBA dezelfde fout...het is excel die het niet goed uitrekend/weergeeft ???
 
Zo weten we nog steeds niet wat er in die cellen staat, tekst of getal.
In VBA kan je dat converteren naar een getal met de CDbl functie.
 
Getal!
Zie screendump met lint. Nieuw bestand, geen VBA.
 

Bijlagen

  • ScreenDump.jpg
    ScreenDump.jpg
    187,6 KB · Weergaven: 3
Met een plaatje kunnen we niks.
Je kan toch gewoon een documentje plaatsen met getallen in 2 cellen en de gewenste berekening in een derde cel?
Zet ook de gewenste uitkomst er bij.
 
@edmoor...daar heb je dan weer gelijk in...dacht dat het probleem wel bij iemand bekend zou zijn.
Ik heb een test bestand gemaakt.
Links 2 kolommen (getallen en de door excel berekende resultaten) en meer naar rechts 2 kolommen met de "hand" berekend, 20 decimale weergave en 3 decimale weergave. De decimalen zijn na de 3de decimaal allemaal 0.
 

Bijlagen

  • Test-02052024.xlsx
    10,4 KB · Weergaven: 2
@edmoor
Bedankt voor je reactie ...is een oplossing om de getallen correct weer te geven. ...ik zal een extra stap inbouwen in de VBA met de optie afronden.

Normaal als je optelt/aftrekt met getallen met 3 decimalen kan een uitkomst nooit meer decimalen bevatten dan 3 en kan de "rest" opgevuld worden met nullen., Zal het stukje even goed doorlezen.
 
Bij mij wordt het dan:
ActiveSheet.Cells(x, 12).Value = Round(ActiveSheet.Cells(x + 1, 11).Value - ActiveSheet.Cells(x, 11).Value, 3)
 
Activesheet mag je weg laten.
 
PHP:
=--TEXT(A3-A2;"0,000")
of
PHP:
=ROUND(A3-A2;3)
 
Terug
Bovenaan Onderaan