Excel - Porovnání buňky A1 s celým sloupcem A v listu 2

Problém

Snažil jsem se porovnat list1 A2 s listem A2 až A500 a pokud existuje někde v listu2, pak se celý řádek zkopíruje do nového listu.

Experimentoval jsem s mnoha kousky makra od ostatních, ale zatím žádný skutečný úspěch.

Zjistit, jak říci, že v kódu je pro mě trochu obtížné. Snažím se, abych to zvládl.

dílčí porovnání ()

Dim LastRow_1 Jako celé číslo

Dim LastCol_1 jako celé číslo

Dim Data_1 Jako rozsah

Dim LastRow_2 jako celé číslo

Dim LastCol_2 jako celé číslo

Dim Data_2 Jako rozsah

Dim Sh_1 jako sešit

Dim Sh_2 jako pracovní list

Dim X As Long

Dim Y As Long

Dim C_1 Jako rozsah

Dim C_2 Jako rozsah

Nastavit Sh_1 = ActiveWorkbook.Sheets ("Master")

Nastavit Sh_2 = ActiveWorkbook.Sheets ("Inventory")

LastRow_1 = Sh_1.range ("A5000") Konec (xlUp) .Row

LastCol_1 = Sh_1.range ("A5000"). Konec (xlToLeft).

Nastavit Data_1 = Sh_1.range ("A2") Změna velikosti (LastRow_1, LastCol_1)

LastRow_2 = Sh_2.range ("A5000") Konec (xlUp) .Row

LastCol_2 = Sh_2.range ("A5000") Konec (xlToLeft).

Nastavit Data_2 = Sh_2.range ("A2") Změna velikosti (LastRow_2, LastCol_2)

Pro každý C_1 v Data_1

Pro každý C_2 v Data_2

Pokud C_2 = C_1 Pak

'nalezl buňku na listu2, která odpovídala buňce v listu1

„teď udělej, co musíš udělat

Data_2.EntireRow.Copy Cíl: = Pracovní listy ("New_Master") Rozsah ("A5000") Konec (xlUp) .Offset (1, 0)

Konec Pokud

Další C_2

Další C_1

koncová sub

Když to spustím, stačí zkopírovat vše na list nazvaný New_Master, včetně neshod.

Co mi chybí? To musí být zřejmé, to je obvykle případ.

Řešení

Stačí napsat:

 Data_2.EntireRow.Copy 

Zkopírujete celý rozsah "Data_2", který odpovídá sloupci A listu "Inventář"

Pokud chcete kopírovat pouze řádky v Data_2, které odpovídají Data_1, zapište

 C_2.EntireRow.Copy 

A je to!

Poznámka

Děkuji Ivanovi-motyku za tento tip na fóru.

Předchozí Článek Následující Článek

Nejlepší Tipy