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

Anonim

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

Τα ακατέργαστα δεδομένα για αυτό το παράδειγμα αποτελούνται από στοιχεία εργαζομένων από διαφορετικά τμήματα σε διαφορετικά φύλλα. Θέλουμε να συγκεντρώσουμε τα στοιχεία των εργαζομένων σε ένα μόνο φύλλο.

Δημιουργήσαμε τη μακροεντολή "CopyRangeFromMultipleSheets" για την ενοποίηση των δεδομένων. Αυτή η μακροεντολή μπορεί να εκτελεστεί κάνοντας κλικ στο κουμπί "Ενοποίηση δεδομένων".

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

Επεξήγηση κώδικα

"Κυκλοφορία" σε όλα τα φύλλα για να ελέγξετε εάν υπάρχει φύλλο "Master".

Για κάθε πηγή σε αυτό το βιβλίο εργασίας. Φύλλα εργασίας

Εάν Source.Name = "Master" Τότε

MsgBox "Το κύριο φύλλο υπάρχει ήδη"

Έξοδος Sub

Τέλος εαν

Επόμενο

Ο παραπάνω κώδικας χρησιμοποιείται για να ελέγξει εάν το φύλλο "Master" υπάρχει στο βιβλίο εργασίας. Εάν υπάρχει φύλλο "Master" στο βιβλίο εργασίας, τότε ο κωδικός εξέρχεται και εμφανίζεται ένα μήνυμα σφάλματος.

Source.Range ("A1"). SpecialCells (xlLastCell). Σειρά

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

Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Αντιγραφή Destination.Range ("A" & DestLastRow)

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

Ακολουθήστε παρακάτω για τον κωδικό

 Sub CopyRangeFromMultipleSheets () 'Δήλωση μεταβλητών Dim Source ως φύλλο εργασίας Dim Προορισμός ως φύλλο εργασίας Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False' Κάντε αναζήτηση σε όλα τα φύλλα για να ελέγξετε αν υπάρχει φύλλο "Master" για κάθε πηγή σε αυτό το βιβλίο εργασίας. Φύλλα εργασίας Εάν πηγή. Όνομα = "Master" Τότε MsgBox "Master φύλλο υπάρχει ήδη" Exit Sub End If Next "Εισαγωγή νέου φύλλου μετά το φύλλο" Main "Set Destination = Worksheets.Add (after: = Sheets (" Main ")) Destination.Name =" Master "'Looping all φύλλα στο βιβλίο εργασίας για κάθε πηγή σε αυτό το βιβλίο εργασίας. Φύλλα εργασίας' Αποτροπή ενοποίησης δεδομένων από το φύλλο" Main "και" Master "If Source.Name" Main "And Source.Name" Master "Στη συνέχεια SourceLastRow = Source .Range ("A1"). SpecialCells (xlLastCell). Row Source.Activate If Source.UsedRange.Count> 1 Then DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell). Row If DestLastRow = 1 Στη συνέχεια, αντιγράφετε δεδομένα από το φύλλο προέλευσης στο φύλλο προορισμού Source.Range ("A 1 ", Εύρος (" A1 "). SpecialCells (xlLastCell)). Αντιγραφή Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Αντιγραφή Destination.Range ("A" & (DestLastRow + 1)) Τέλος Αν Τερματισμός Αν Τερματισμός Αν Επόμενος Προορισμός. Ενεργοποιήστε την εφαρμογή.ScreenUpdating = True End Sub 

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

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