09. marts 2010 - 13:57Der er
4 kommentarer og 1 løsning
Excel: Sammenligning af data i to kolonner
Hej
Hver måned modtager jeg et dataark med oplysninger, som jeg vha. opslag i et masterark overfører til et nyt ark i en form som jeg kan bruge. Inden jeg kan gøre det har jeg dog behov for at lave en kontrol af om masterarket indeholder de data jeg skal bruge.
I masterarket findes en kolonne (iVare1) med unikke varenumre som skal sammenlignes tilsvarende kolonne (iVare2) med varenumre i dataarket.
Det hænder at der, via dataarket, kommer nye varenumre til, og jeg har derfor prøvet at finde frem til en kode, der løber gennem (iVare1) og (iVare2), og via en tekstboks fortæller mig om der findes varenumre i (iVare2), som ikke findes i (iVare1), og i tilfælde heraf, hvilke.
Jeg har gennemsøgt nettet på kryds og tværs, men endnu ikke fundet en egnet løsning. Håber at hjælpen findes her:-)
I en jomfruelig kolonne (N) i vare2 skriver du i celle N1 =hvis(er.fejl(lopslag(a1;vare2!a$1:a$500;1;falsk));1;0)
Her er forudsat at der er 500 poster i vare2, og at indexnummert står i kolonne A - men der må godt være flere poster. Er der fx 5000, så skal der stå a$5000 i stedet for a$500.
I kolonne M (som forhåbenlig også er jomfru) skriver du i celle M1 = N1 I celle M2 skriver du: =M1+N2
I celle O1 skrives: (i det det antages at O indtil videre også er jomfru) =hvis(n1=1;a1;)
Nu kopieres først celle n1 til celle n2. Så O1 til O2
Dernæst kopieres cellerne M2, N2 og O2 og 500 gange nedad.
Lav så et nyt ark Nye numre.
I celle a1 skriver du 1 I b1 skriver du =lopslag(vare2!m1;vare2!M$1:vare2!m$500;3;falsk) I celle a2 skriver du =a1+1
Tak for din respons:-) Jeg kan godt se din pointe, og dine formler virker også fint.
Mit problem er bare at jeg er ved at omskrive fejlsøgnings- og den efterfølgende konverterings-/beregningsproces til VBA.
Tidligere versioner var udelukkende baseret på formler, men da der er tale om temmelig store datamængder, bliver min maskine simpelthen lagt ned, når jeg forsøger at konvertere data.
Kopiering, beregning og konverterng af data via VBA er ikke noget problem. Det virker fint. Det er blot fejlsøgningen der driller, så jeg håber stadig at nogen har en rigtig god idé.
Public Sub TjekVareID() Dim NYdata As Variant, GLdata As Variant, N As Long, G As Long 'Begge ark skal være i samme mappe
NYdata = Sheets("NVvare").Range("a1:A" & Sheets("NVvare").Range("a1").CurrentRegion.Rows.Count) GLdata = Sheets("Master").Range("a1:A" & Sheets("Master").Range("a1").CurrentRegion.Rows.Count) For N = 2 To UBound(NYdata) ' starter ved række 2, da der er overskrifter For G = 2 To UBound(GLdata) If GLdata(G, 1) = NYdata(N, 1) Then ' hvis den findes,så NYdata(N, 1) = emty ' tømmes variablen Exit For End If Next
If Not IsEmpty(NYdata(N, 1)) Then ' hvis den ikke findes, tilføjes den Sheets("Master").Range("A" & Sheets("Master").Range("a1").CurrentRegion.Rows.Count + 1) = NYdata(N, 1) MsgBox NYdata(N, 1) & " er tilføjet på række " & Sheets("Master").Range("a1").CurrentRegion.Rows.Count NYdata(N, 1) = Empty End If Next
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.