Avatar billede birkus Nybegynder
18. maj 2010 - 16:00 Der er 5 kommentarer og
1 løsning

Sammenligne værdier

Nedenstående kode sammenligner to talværdier:

If Sheets("SAP").Cells(SapRow, "K") = Sheets("NBR").Cells(NbrRow, "F") Then

Men af en eller anden grund så giver den af og til et resultat hvor to felter der har samme værdi ikke vurderes til at være samme værdi.

Er der nogen der har været ude for noget lignende?
Avatar billede excelent Ekspert
18. maj 2010 - 20:40 #1
Det er nu nok fordi de ikke er helt ens
Gætter på det er decimalerne der driller
Du kan konstatere at der er en forskel med følgende formler
hvis dine tal var i cellerne A1 og A2 - ret selv til aktuel

=rest(A1;2)*1000
=rest(A2;2)*1000

formlen REST tager decimalværdien og denne ganges med 1000
det skulle synligøre forskellen

Løsningen kunne være at afrunde de tal du sammenligner til fx. 2 decimaler:

If Round(Sheets("SAP").Cells(SapRow, "K"),2) = Round(Sheets("NBR").Cells(NbrRow, "F"),2) Then
Avatar billede birkus Nybegynder
19. maj 2010 - 10:14 #2
Hej Excelent

Tak for forslaget.

Umiddelbart kan jeg ikke finde funktionen REST.
Jeg bruger Excel 2007 - kan det være derfor?

Sådan lige umiddelbart så er al min rådata med op til 2 decimaler, så jeg kan næsten ikke forestille mig at det kan have noget med decimalerne at gøre.
Rådata stammer fra csv filer, og der kan vel ikke gemme sig nogle decimaler jeg overser?

Jeg har kontrolleret mine rådata, og i et af eksemplerne skal min formel sammenligne 4402,44 med 4402,44, men kan ikke få disse to værdier til at være lig med hinanden.
Derimod fanges de af en anden formel jeg har som ser på om der er en begrænset difference mellem beløbene (+- 0,1%).
Så alt andet lige må Excel jo opfatte beløbene, men alligevel ikke opfatte dem helt ens.

Det skal dog lige siges at på det ene beløb bliver jeg nødt til at divedere med 100, da rådataene ikke indeholder decimal divider.

Det underlige er at formelen gennemløber flere tusinde linier og langt de fleste bliver sammenlignet korrekt, men ca. 10% bliver opfattet med difference selv om jeg ikke med mit blotte øje kan opfange denne difference.
Avatar billede birkus Nybegynder
19. maj 2010 - 10:43 #3
Jeg tager det i mig igen.

Da jeg implementerede "round" i min formel, fik jeg 100% match på alle linier.

Der må jo så have været nogle decimaler jeg ikke kunne se med mit blotte øje.

Mange tak for hjælpen.
Avatar billede birkus Nybegynder
19. maj 2010 - 10:44 #4
Ok - jeg fik så lige ved en fejl oprettet min egen kommentar som et svar.

Hvis du gerne vil have pointene kan du så ikke oprette et svar jeg kan acceptere?
Avatar billede excelent Ekspert
19. maj 2010 - 17:45 #5
Ja tal er ikke altid hvad de ser ud til at være
derfor kan det være nødvendigt at forøge antal viste decimaler
eller som jeg foreslog gange decimalerne op med en faktor via formlen REST, som iøvrigt hedder MOD på engelsk
Avatar billede birkus Nybegynder
19. maj 2010 - 18:33 #6
Ja MOD er nok mere noget jeg kan bruge da jeg bruger engelsk version af Excel.

Det vil jeg teste ved lejlighed, indtil videre har jeg fået løst mit problem ved hjælp af ROUND

Tak for hjælpen.
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
Kurser inden for grundlæggende programmering

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