Î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