Excel - Vergelijking van cel A1 tot volledig Een kolom in Blad 2
Kwestie
Ik heb geprobeerd om sheet1 A2 te vergelijken met sheet2 A2 tot en met A500 en als het ergens in sheet2's een kolom bevat, kopieer dan die hele rij naar een nieuw blad.
Ik heb met veel stukjes macrocode van anderen geëxperimenteerd maar tot nu toe geen echt succes.
Uitzoeken hoe ik dat in de code moet zeggen, vind ik een beetje moeilijk. Ik heb moeite om dit onder de knie te krijgen.
sub vergelijk ()
Dim LastRow_1 als geheel getal
Dim LastCol_1 As Integer
Dim Data_1 As range
Dim LastRow_2 As Integer
Dim LastCol_2 As Integer
Dim Data_2 Als bereik
Dim Sh_1 als werkblad
Dim Sh_2 Als werkblad
Dim X zo lang
Dim Y As Long
Dim C_1 Als bereik
Dim C_2 Als bereik
Set Sh_1 = ActiveWorkbook.Sheets ("Master")
Set Sh_2 = ActiveWorkbook.Sheets ("Voorraad")
LastRow_1 = Sh_1.range ("A5000"). Einde (xlUp) .Row
LastCol_1 = Sh_1.range ("A5000"). End (xlToLeft) .Column
Set Data_1 = Sh_1.range ("A2"). Formaat wijzigen (LastRow_1, LastCol_1)
LastRow_2 = Sh_2.range ("A5000"). Einde (xlUp) .Row
LastCol_2 = Sh_2.range ("A5000"). End (xlToLeft) .Column
Set Data_2 = Sh_2.range ("A2"). Resize (LastRow_2, LastCol_2)
Voor elke C_1 In Data_1
Voor elke C_2 in gegevens_2
Als C_2 = C_1 Dan
'vond een cel op sheet2 die overeenkwam met de cel in sheet1
'doe nu wat je moet doen
Data_2.EntireRow.Copy Bestemming: = Werkbladen ("New_Master"). Bereik ("A5000"). Einde (xlUp) .Offset (1, 0)
Stop als
Volgende C_2
Volgende C_1
einde sub
Wanneer ik dit uitvoer, wordt alles naar het blad New_Master gekopieerd, inclusief de niet-overeenkomsten.
Wat mis ik? Het moet duidelijk zijn, dat is meestal het geval.
Oplossing
Je hoeft alleen maar te schrijven:
Data_2.EntireRow.Copy
U kopieert het hele bereik "Data_2", wat overeenkomt met kolom A van het blad "Inventory"
Als u alleen de rijen in Data_2 wilt kopiëren die overeenkomen met Data_1, moet u schrijven
C_2.EntireRow.Copy
Dat is het!
Notitie
Dank aan Ivan-hoe voor deze tip op het forum.