Excel - jedno makro pre viaceré riadkové úlohy

  • Problém
  • Riešenie
  • Poznámka

Problém

Mám dva samostatné pracovné zošity, ktoré potrebujem porovnať. Úlohou po ruke je nájsť konkrétny text v zošite 2 (stĺpec A) a po jeho nájdení - potom musím skopírovať ďalšie dve bunky / riadky (stĺpce B a C) a vložiť ich do wkbook 1 (stĺpce B a C) pre každý jednotlivý riadok pre nájdený text. Tie, ktoré nie sú nájdené, môžu byť ponechané samostatne alebo prázdne.

Riešenie

Môžete použiť toto:

 Dim mySearchText As String Dim wb1, wb2 Ako zošit Dim sh1, sh2 Ako listy Nastaviť wb1 = zošity ("Book1") Nastaviť wb2 = zošity ("Book2") Urobiť, kým Pravda mySearchText = InputBox ("Zadajte text na vyhľadávanie. Zadajte prázdne ukončiť operáciu. ", " Hľadať ") Ak (mySearchText =" ") Potom Koniec Sub wb2.Activate wb2BRow = Bunky (65536, 2) .End (xlUp) .Row wb2CRow = Bunky (65536, 3). xlUp) .Row Ak (wb2BRow> wb2CRow) Potom wb2row = wb2BRow Else wb2row = wb2CRow Koniec If If wb2row = 1 Potom wb2row = 2 wb1.Activate On Error Pokračovať Ak ActiveSheet.AutoFilterMode potom Cells.Select Selection.AutoFilter End If IfSheet .AutoFilterMode = False Potom riadky (1) .Vyberte Selection.AutoFilter End If On Error GoTo 0 Pole Selection.AutoFilter: = 1, Kritérium1: = "=" & mySearchText, Operator: = xlAnd Dim lastRow As Long lastRow = Bunky (65536, 1) .End (xlUp) .Row Ak (lastRow> 1) Potom Rozsah (bunky (2, 2), bunky (lastRow, 3)) Vyberte Selection.Copy wb2.Activate Cells (wb2row, 2). .PasteSpecial wb2BRow = Bunky (65536, 2) (xlUp) .Row wb2CRow = Bunky (65536, 3) .End (xlUp) .Row Ak (wb2BRow> wb2CRow) Potom wb2row = wb2BRow Else wb2row = wb2CRow Koniec Ak wb2row = wb2row + 1 End If Loop 

Poznámka

Vďaka rizvisa1 za tento tip na fóre.

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

Najlepšie Tipy