Avatar billede nixon Novice
02. juli 2014 - 21:11 Der 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..
Avatar billede kabbak Professor
02. juli 2014 - 21:58 #1
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
Avatar billede kabbak Professor
02. juli 2014 - 22:00 #2
Husk at ændringer som er lavet med VBA ikke kan fortrydes, så kør den på testark først.

Sig til hvis de brugte data skal slettes
Avatar billede kabbak Professor
02. juli 2014 - 23:07 #3
sådan, hvis brugte data fjernes

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
Avatar billede kabbak Professor
02. juli 2014 - 23:07 #4
et svar
Avatar billede nixon Novice
02. juli 2014 - 23:50 #5
Hej kabbak,

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" ..
Avatar billede kabbak Professor
03. juli 2014 - 09:14 #6
Du skal køre makroen Merge, det gør du ikke med F5
Avatar billede kabbak Professor
03. juli 2014 - 09:16 #7
eller upload et eksempelark her
http://gratisupload.dk/
så kikker jeg på det.

Husk at sætte link herind, så jeg kan finde filen
Avatar billede nixon Novice
03. juli 2014 - 15:57 #8
Jeg har lagt den her ..  Fik også prøvede at kører makroen "fik bare ikke skrevet det :)" ..  men det fungere ikke :(

Kan du se om koden ligger det rigtige sted

http://gupl.dk/712060/
Avatar billede kabbak Professor
03. juli 2014 - 16:45 #9
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
Avatar billede nixon Novice
03. juli 2014 - 17:50 #10
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?
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

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