Αντιγράψτε το UsedRange κάθε φύλλου σε ένα φύλλο χρησιμοποιώντας VBA στο Microsoft Excel

Anonim

Σε περίπτωση που θέλετε να αντιγράψετε το χρησιμοποιούμενο εύρος κάθε φύλλου εργασίας στο κύριο φύλλο, θα πρέπει να διαβάσετε αυτό το άρθρο. Θα χρησιμοποιήσουμε τον κώδικα VBA για να αντιγράψουμε τα δεδομένα από κάθε φύλλο εργασίας και στη συνέχεια να επικολλήσουμε σε άλλο φύλλο χωρίς αντικατάσταση.

Η μακροεντολή θα προσθέσει ένα φύλλο με το όνομα Master στο βιβλίο εργασίας σας και θα αντιγράψει τα κελιά από κάθε φύλλο στο βιβλίο εργασίας σας σε αυτό το φύλλο εργασίας.

Η πρώτη μακροεντολή κάνει ένα κανονικό αντίγραφο και η δεύτερη μακροεντολή αντιγράφει τις τιμές. Οι υποκατηγορίες μακροεντολών χρησιμοποιούν τις παρακάτω λειτουργίες. η μακροεντολή δεν θα λειτουργήσει χωρίς τις λειτουργίες.

Ακολουθεί το στιγμιότυπο δεδομένων από το Sheet1 & Sheet2:

Πρέπει να ακολουθήσουμε τα παρακάτω βήματα για να ξεκινήσουμε τον επεξεργαστή VB:

  • Κάντε κλικ στην καρτέλα Προγραμματιστής
  • Από την ομάδα κωδικών, επιλέξτε Visual Basic

  • Αντιγράψτε τον παρακάτω κώδικα στην τυπική μονάδα
Sub CopyUsedRange () Dim sh As Worksheet Dim DestSh As Worksheet Dim Last As Long If SheetExists ("Master") = True then MsgBox "The sheet sheet ήδη υπάρχει" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Master" For Every sh In ThisWorkbook.Workshef 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 As Long If SheetExists ("Master") = True Τότε MsgBox "Το φύλλο Master υπάρχει ήδη" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" For every sh In ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) With sh.UsedRange DestSh.Cells (Τελευταία + 1, 1). Αλλαγή μεγέθους (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Ap plication.ScreenUpdating = True End Sub Function LastRow (sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Row On Error GoTo 0 End Function Function Lastcol (sh As Worksheet) On Error Resume Next Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlΠριν από, _ MatchCase: = False). Column On Error GoTo 0 End Function Fan SheetExists (SName As String, _ Optional ByVal WB As Workbook) As Boolean On Error Resume Next If WB is Nothing then Set WB = ThisWorkbook SheetExists = CBool ​​(Len (Φύλλα (SName) . Όνομα)) Λειτουργία Τέλους 

Τώρα, ο κώδικας μακροεντολής έχει οριστεί. θα τρέξουμε τη μακροεντολή "CopyUsedRange" και θα εισαγάγει ένα νέο φύλλο "Master" και θα αντιγράψουμε τα δεδομένα από κάθε φύλλο.

Συμπέρασμα:Η αντιγραφή δεδομένων από πολλά φύλλα είναι μια μη αυτόματη εργασία. ωστόσο; με τον παραπάνω κώδικα, μπορούμε να ενοποιήσουμε δεδομένα με ένα μόνο κλικ σε μια μακροεντολή.

Αν σας άρεσαν τα ιστολόγια μας, μοιραστείτε το με τους φίλους σας στο Facebook. Επίσης, μπορείτε να μας ακολουθήσετε στο Twitter και το Facebook.

Θα θέλαμε πολύ να σας ακούσουμε, ενημερώστε μας πώς μπορούμε να βελτιώσουμε, να συμπληρώσουμε ή να καινοτομήσουμε το έργο μας και να το κάνουμε καλύτερο για εσάς. Γράψτε μας στον ιστότοπο email