Avatar billede Glud Nybegynder
15. januar 2013 - 21:00 Der er 2 kommentarer

Excel vba: Kopi af celleværdi stemmer ikke med original

Hej

Jeg er ved at sætte et ark op, der kopierer værdier fra en bestemt kolonne fra adskillige faneblade til et nyt faneblad

Følgende linie kopierer vha en "While - Wend"-løkke de korrekte data fra ark2 til ark1, a og b sørger for at gennemløbe arkene korrekt:

Sheets("Ark1").Cells(a, 2).Value = Sheets("Ark2").Cells(b, 12).Value

Ovenstående er gentaget for alle de faner der skal kopieres fra.
Herefter sorteres data i ark1 alfabetisk, og til sidst fjernes dubletter.
Således bliver flere tusind linjer til få hundrede unikke input. Dette gøres lidt omstændigt, da det skal kunne køre i en 2003 version.
Alt dette giver det ønskede output.

Men efterfølgende har jeg sat flere "While - Wend"-løkker op, der for hver af de unikke værdier gennemsøger fanebladene med de originale værdier, for at pille værdier af nabo-celler ud.

Følgende ligger i While-løkkerne:
If Sheets("Ark2").Cells(b, 12).Value = Sheets("Ark1").Cells(a, 3).Value Then
            Sheets("Ark1").Cells(a, 4).Value = Sheets("Ark2").Cells(b, 13).Value
            Sheets("Ark1").Cells(a, 5).Value = Sheets("Ark2").Cells(b, 11).Value

If-sætningen bør således lede i ark2 kolonne 12 efter værdien i ark1 kolonne 3. Og hvis den bliver fundet, så skal væriden i hhv kolonne 13 og 11 kopieres over i ark1.
Dette fungerer også som det skal, så længe det er tekst der bliver søgt efter, men i få tilfælde er der tale om tal og her returnere if-sætningen værdien "false", til trods for at der bør være tale om en kopi og original der testes overfor hinanden.

Hvis der er nogen der ligger inde med en mulig løsning på dette, så hører jeg gerne.
Avatar billede kabbak Professor
19. februar 2013 - 22:37 #1
jeg kan ikke få den fejl frem, det der .Value er ikke nødvendig

If Sheets("Ark2").Cells(B, 12) = Sheets("Ark1").Cells(A, 3) Then
            Sheets("Ark1").Cells(A, 4) = Sheets("Ark2").Cells(B, 13)
            Sheets("Ark1").Cells(A, 5) = Sheets("Ark2").Cells(B, 11)
        End If
Avatar billede kabbak Professor
22. februar 2013 - 15:50 #2
angående de tal, der der så decimaler, hvis du ikke viser dem alle, kan de godt se ens ud.

med 2 decimaler
1,123 viser 1,12
1,119 viser 1,12
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