Salt la conținutul principal

Cum să copiați rânduri din mai multe foi de lucru pe baza criteriilor într-o foaie nouă?

Să presupunem că aveți un registru de lucru cu trei foi de lucru care au aceeași formatare ca și imaginea de mai jos. Acum, doriți să copiați toate rândurile din aceste foi de lucru în care coloana C conține textul „Finalizat” într-o nouă foaie de lucru. Cum ați putea rezolva această problemă rapid și ușor fără a le copia și lipi manual unul câte unul?

Copiați rânduri din mai multe foi de lucru pe baza criteriilor într-o foaie nouă cu cod VBA


Copiați rânduri din mai multe foi de lucru pe baza criteriilor într-o foaie nouă cu cod VBA

Următorul cod VBA vă poate ajuta să copiați rânduri specifice din toate foile de lucru din registrul de lucru pe baza unei anumite condiții într-o foaie de lucru nouă. Vă rugăm să faceți acest lucru:

1. Țineți apăsat butonul ALT + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. Clic Insera > Moduleși lipiți următorul cod în fereastra modulului.

Cod VBA: copiați rânduri din mai multe foi pe baza criteriilor într-o nouă foaie

Public Sub CopyRows_ValuesAndNumberFormats()
Dim xWs As Worksheet
Dim xCWs As Worksheet
Dim xRg As Range
Dim xStrName As String
Dim xRStr As String
Dim xRRg As Range
Dim xC As Integer
On Error Resume Next
Application.DisplayAlerts = False
xStr = "Kutools for Excel"
xRStr = "Completed"
Set xCWs = ActiveWorkbook.Worksheets.Item(xStr)
If Not xCWs Is Nothing Then
    xCWs.Delete
End If
Set xCWs = ActiveWorkbook.Worksheets.Add
xCWs.Name = xStr
xC = 1
For Each xWs In ActiveWorkbook.Worksheets
    If xWs.Name <> xStr Then
        Set xRg = xWs.Range("C:C")
        Set xRg = Intersect(xRg, xWs.UsedRange)
        For Each xRRg In xRg
            If xRRg.Value = xRStr Then
               xRRg.EntireRow.Copy
               xCWs.Cells(xC, 1).PasteSpecial xlPasteValuesAndNumberFormats
               xC = xC + 1
            End If
        Next xRRg
    End If
Next xWs
Application.DisplayAlerts = True
End Sub

notițe: În codul de mai sus:

  • Textul "Terminat" in acest xRStr = "Finalizat" scriptul indică condiția specifică pe care doriți să copiați rândurile pe baza;
  • C: C în acest Setați xRg = xWs.Range („C: C”) scriptul indică coloana specifică unde se află condiția.

3. Apoi, apăsați F5 cheie pentru a rula acest cod și toate rândurile cu condiția specifică au fost copiate și lipite într-o nouă foaie de lucru numită Kutools pentru Excel în registrul de lucru curent. Vedeți captura de ecran:


Mai multe articole de extragere sau copiere relative:

  • Copiați datele într-o altă foaie de lucru cu filtru avansat în Excel
  • În mod normal, putem aplica rapid funcția Filtru avansat pentru a extrage date din datele brute din aceeași foaie de lucru. Dar, uneori, când încercați să copiați rezultatul filtrat într-o altă foaie de lucru, veți primi următorul mesaj de avertizare. În acest caz, cum ați putea face față acestei sarcini în Excel?
  • Copiați rândurile pe o foaie nouă pe baza criteriilor de coloană din Excel
  • De exemplu, există un tabel de cumpărare a fructelor și acum trebuie să copiați înregistrările pe o foaie nouă pe baza fructelor specificate, cum să o faceți cu ușurință în Excel? Aici voi introduce câteva metode pentru a copia rânduri pe o foaie nouă pe baza criteriilor de coloană din Excel.
  • Copiați rândurile dacă coloana conține text / valoare specifică în Excel
  • Presupunând că doriți să aflați celule care conțin text sau valoare specifică într-o coloană și apoi să copiați întregul rând în care se află celula găsită, cum ați putea face față acesteia? Aici voi introduce câteva metode pentru a afla dacă coloana conține text sau valoare specifică și apoi copiez întregul rând în Excel.

  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane și păstrarea datelor; Conținut de celule divizate; Combinați rânduri duplicate și sumă / medie... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Formule favorite și inserare rapidă, Gama, Diagrame și Imagini; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Gruparea tabelului pivot după numărul săptămânii, ziua săptămânii și multe altele ... Afișați celulele deblocate, blocate prin diferite culori; Evidențiați celulele care au formulă / nume...
fila kte 201905
  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comments (2)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hi,

thank you very much for the code. I have a question: the code runs smoothly on some of my sheets, but looks like enters an infinite loop in some other ones which makes excel crash. What could the reason be?
This comment was minimized by the moderator on the site
Hello there, thank you so much for the code above, it solved me a problem with a complex file; a solution I have been looking for a while now. Thank you..I have one question. How do I change the code so that it copies the rows but only from colum A to colum Q, so not Entire.Row?Thank you in advance and great work!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations