Avatar billede Glud Nybegynder
18. januar 2013 - 21:11 Der er 2 kommentarer og
1 løsning

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 tredjeoeje Nybegynder
18. januar 2013 - 22:36 #1
Har du prøvet at konvertere til tekst? F.eks

If Sheets("Ark2").Cells(b, 12).Value = CStr(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
End if
Avatar billede Glud Nybegynder
18. januar 2013 - 22:57 #2
Det var lige hvad der skulle til. Mange tak, smid et svar hvis du vil have point.
Avatar billede tredjeoeje Nybegynder
18. januar 2013 - 23:29 #3
Det lyder godt :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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