Copiați gama utilizată a fiecărei coli într-o coală utilizând VBA în Microsoft Excel

Anonim

În cazul în care doriți să copiați intervalul utilizat pentru fiecare foaie de lucru în foaia principală, atunci ar trebui să citiți acest articol. Vom folosi codul VBA pentru a copia datele din fiecare foaie de lucru și apoi le vom lipi într-o altă foaie fără a suprascrie.

Macrocomanda va adăuga o foaie cu numele Master în registrul de lucru și va copia celulele din fiecare foaie din registrul de lucru din această foaie de lucru.

Prima macro face o copie normală, iar a doua macro copiază valorile. Subsistemele macro utilizează funcțiile de mai jos; macro-ul nu va funcționa fără funcții.

Următoarele sunt instantaneul datelor din Sheet1 & Sheet2:

Trebuie să urmăm pașii de mai jos pentru a lansa editorul VB:

  • Faceți clic pe fila Dezvoltator
  • Din grupul de coduri, selectați Visual Basic

  • Copiați codul de mai jos în modulul standard
Sub CopyUsedRange () Dim sh Ca foaie de lucru Dim DestSh Ca foaie de lucru Dim Last At Long If SheetExists ("Master") = True Then MsgBox "The sheet Master already exist" Exit Sub End if Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" Pentru fiecare sh din ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) sh.UsedRange.Copy DestSh.Cells (Last + 1, 1 ) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyUsedRangeValues ​​() Dim sh As Worksheet Dim DestSh As Worksheet Dim Last At Long If SheetExists ("Master") = True Then MsgBox "The Master sheet already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" Pentru fiecare sh din ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) With sh.UsedRange DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End with End If End If Next Ap Next plication.ScreenUpdating = Funcția finală finală adevărată LastRow (sh Ca foaie de lucru) La eroare Reîncepe Următorul LastRow = sh.Cells.Find (Ce: = "*", _ După: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False) .Row On Error GoTo 0 End Function Function Lastcol (sh As Sheet Works) On Error Reîncepe Următorul Lastcol = sh.Cells .Găsiți (Ce: = "*", _ După: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = Fals). Coloană pe eroare GoTo 0 Funcție Funcție Foaie funcțională Exista (SName ca șir, _ Opțional ByVal WB ca registru de lucru) Ca Boolean la eroare Reîncepeți în continuare dacă WB nu este nimic, apoi setați WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName)) .Nume)) Funcție de sfârșit 

Acum, codul macro este setat; vom rula macro-ul „CopyUsedRange” și va introduce o nouă foaie „Master” și vom copia datele din fiecare foaie.

Concluzie:Copierea datelor din mai multe foi este o sarcină manuală; in orice caz; cu codul de mai sus, putem consolida datele printr-un singur clic pe o macro.

Dacă ți-au plăcut blogurile noastre, împărtășește-le prietenilor tăi de pe Facebook. Și, de asemenea, ne puteți urmări pe Twitter și Facebook.

Ne-ar plăcea să aflăm de la dvs., să ne anunțați cum putem îmbunătăți, completa sau inova munca noastră și să o îmbunătățim. Scrieți-ne pe site-ul de e-mail