02. juli 2014 - 21:11Der er
9 kommentarer og 1 løsning
Sammenlign celler og sorter VBA?
Jeg har fået et spørgsmål jeg ikke har kunne finde svar på, tænker at løsningen er VBA, men er ikke så skarp i det.
Udfordringen er følgende. Jeg har følgende data som skal sorteres
A B C D E F G H række 1 Kaj (45)614 F0001 13661 F0031 4561 række 2 Bente (46)642 F0301 35665 F8915 8461 række 3 Lea (61)136 F0031 12345 F1561 8135 række 4 Troels (45)123 F1561 61445 F0001 7462 række 5 Troels (65)356 F8915 12342 F0002 3494 række 6 Lea (68)945 F0215 11365 F8515 1648 række 7 Søren (45)996 F1566 94568 F0215 1635 række 8 Thomas (65)113 F8515 99645 F1566 7491 række 9 Karsten (42)123 F0002 64246 F0301 1584 osv osv række 900
Jeg er godt klar at jeg selv skal i gang med noget arbejde, men gode råd, forslag og vejledning er yderst velkommen.
Meningen er at jeg skal kontrollere om der er nogen celler i C der er magen til cellerne i G, og hvis der er "som det er tilfældet oven over" så skal jeg bruge dataen i A, C/G F og H Så den erstatter Cellen B med det der står i F og tager det der står i H og kopier over i D hvorved ovenståend resultat bliver A B C D række 1 Kaj 61445 F0001 7462 række 2 Bente 64246 F0301 1584 række 3 Lea 13661 F0031 4561 række 4 Troels 12345 F1561 8135 række 5 Troels 35665 F8915 8461 række 6 Lea 94568 F0215 1635 række 7 Søren 99645 F1566 7491 række 8 Thomas 11365 F8515 1648 række 9 Karsten 12342 F0002 3494
Hvis der ikke er nogen celler der passer sammen, skal cellerne i Søjle A, B, og C stå uændret..
Stå på arket med data og kør så koden, den skal i et modul.
Public Sub Merge() Dim Data As Variant, I As Long, N As Long
Data = ActiveSheet.UsedRange For I = 1 To UBound(Data) For N = 1 To UBound(Data) If Data(I, 3) = Data(N, 6) Then Data(I, 2) = Data(N, 5) Data(I, 3) = Data(N, 6) Data(I, 4) = Data(N, 7) Exit For End If Next Next ActiveSheet.UsedRange = Data End Sub
Public Sub Merge() Dim Data As Variant, I As Long, N As Long
Data = ActiveSheet.UsedRange For I = 1 To UBound(Data) For N = 1 To UBound(Data) If Data(I, 3) = Data(N, 6) Then Data(I, 2) = Data(N, 5) Data(I, 3) = Data(N, 6) Data(I, 4) = Data(N, 7) Data(N, 5) = "" Data(N, 6) = "" Data(N, 7) = "" Exit For End If Next Next ActiveSheet.UsedRange = Data End Sub
Jeg må indrømme at jeg ikke havde forventet en løsning, snare nogle råd om hvilke retning jeg skulle gå :)
Jeg har lidt udfordringer, jeg har lagt ovenstående i et modul, og kører dataen "F5" .. men der sker ikke noget, ingen fejlmeddelser eller aktivitet på arket ..
Jeg kan ikke se at der skulle være noget krav til at arket har et specielt navn så den hedder "Ark1" ..
Jeg havde valgt forkert kolonne, koden skal se sådan ud
Public Sub Merge() Dim Data As Variant, I As Long, N As Long
Data = ActiveSheet.UsedRange For I = 1 To UBound(Data) For N = 1 To UBound(Data) If Data(I, 3) = Data(N, 7) Then Data(I, 2) = Data(N, 6) Data(I, 3) = Data(N, 7) Data(I, 4) = Data(N, 8) Data(N, 6) = "" Data(N, 7) = "" Data(N, 8) = "" Exit For End If Next Next ActiveSheet.UsedRange = Data End Sub
Det er genialt, enkelt .. og ikke helt til at forstå ..
TAK :D
Tror næsten jeg har den, de to variable I og N kunne hedder hvad som helst ikke? og det der får løkken til at slutte er når den når til sidste celle?
Synes godt om
Ny brugerNybegynder
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.