Excel - O macrocomandă pentru sarcini multiple

  • Problema
  • Soluţie
  • Notă

Problema

Am două cărți de lucru separate pe care trebuie să le compar. Sarcina la indemana este ca trebuie sa gasesc un text specific in registrul de lucru 2 (col A) si dupa ce am gasit - trebuie sa copiez urmatoarele doua celule / randuri (col B si C) si sa il pastrez in wkbook 1 (col B si C) pentru fiecare rând individual pentru textul găsit. Cele care nu sunt găsite pot fi lăsate singure sau goale.

Soluţie

Puteți folosi acest lucru:

 Dim mySearchText Ca șir de dimensiuni wb1, wb2 Ca fișier de lucru Dim sh1, sh2 Ca seturi de foi wb1 = Seturi de lucru ("Book1") Set wb2 = Tabele de lucru ("Book2") În timp ce True mySearchText = InputBox pentru a renunța la operație. ", " Căutați ") Dacă (mySearchText =" ") Apoi Exit Sub wb2.Activate wb2BRow = Celule (65536, 2) .End (xlUp) .Row wb2CRow = Cells (65536, xlUp) .Row Dacă (wb2BRow> wb2CRow) Apoi wb2row = wb2BRow Else wb2row = wb2CRow Sfârșit Dacă Dacă wb2row = 1 Apoi wb2row = 2 wb1.Activate La Eroare Resume Următorul Dacă ActiveSheet.AutoFilterMode Apoi Cells.Select Selection.AutoFilter Sfârșit Dacă Dacă ActiveSheet .AutoFilterMode = False apoi Rows (1) .Select Selection.AutoFilter Sfarsit Daca Eroare GoTo 0 Selection.AutoFilter Field: = 1, Criteria1: = "=" & mySearchText, Operator: = xlAnd Dim lastRow As Long lastRow = Celule (65536, 1) .End (xlUp) .Rând Dacă (lastRow> 1) Apoi, intervalul (celulele (2, 2), celulele (lastRow, 3)) Selectați opțiunea Selection.Copy wb2.Activate Cells (wb2row, .PasteSpecial wb2BRow = Celule (65536, 2) .End (wb2Row> wb2CRow) Apoi wb2row = wb2BRazul altceva wb2row = wb2CRow Sfarsit Daca wb2row = wb2row + 1 End If Loop 

Notă

Datorită lui rizvisa1 pentru acest sfat pe forum.

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi