Excel - Porovnanie bunky A1 s celým stĺpcom A v liste 2

Problém

Snažil som sa porovnať list1 A2 s listom A2 až A500 a ak existuje niekde v hárku2, potom sa celý riadok skopíruje do nového hárku.

Experimentoval som s mnohými kúskami makro kódu od iných, ale zatiaľ nie je skutočný úspech.

Zistiť, ako povedať, že v kóde je pre mňa trochu ťažké. Snažím sa, aby som sa na to dostal.

sub porovnať ()

Dim LastRow_1 Ako celé číslo

Dim LastCol_1 Ako celé číslo

Dim Data_1 Ako rozsah

Dim LastRow_2 Ako celé číslo

Dim LastCol_2 Ako celé číslo

Dim Data_2 Ako rozsah

Dim Sh_1 ako pracovný hárok

Dim Sh_2 ako pracovný hárok

Dim X As Long

Dim Y As Long

Dim C_1 Ako rozsah

Dim C_2 Ako rozsah

Nastaviť Sh_1 = ActiveWorkbook.Sheets ("Master")

Nastaviť Sh_2 = ActiveWorkbook.Sheets ("Inventory")

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

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

Set Data_1 = Sh_1.range ("A2") Zmena veľkosti (LastRow_1, LastCol_1)

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

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

Set Data_2 = Sh_2.range ("A2") Zmena veľkosti (LastRow_2, LastCol_2)

Pre každý C_1 v Data_1

Pre každý C_2 v Data_2

Ak C_2 ​​= C_1 Potom

'našiel bunku na hárku2, ktorá zodpovedala bunke v hárku1

teraz urobte, čo musíte urobiť

Data_2.EntireRow.Copy Cieľ: = Pracovné listy ("New_Master") Rozsah ("A5000") Koniec (xlUp) .Offset (1, 0)

Koniec Ak

Ďalej C_2

Nasledujúci C_1

koncová sub

Keď to spustím, len skopíruje všetko do hárku s názvom New_Master, vrátane nezodpovedajúcich.

Čo mi chýba? Musí to byť zrejmé, to je zvyčajne prípad.

Riešenie

Stačí napísať:

 Data_2.EntireRow.Copy 

Skopírujete celý rozsah "Data_2", ktorý zodpovedá stĺpcu A listu "Inventár"

Ak chcete kopírovať iba riadky v Data_2, ktoré sa zhodujú s Data_1, zapíšte

 C_2.EntireRow.Copy 

To je všetko!

Poznámka

Ďakujem Ivanovi-motyka za tento tip na fóre.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy