Μερικές φορές θέλουμε να συγχωνεύσουμε πολλά φύλλα σε ένα φύλλο, ώστε να μπορούμε εύκολα να αναλύσουμε τα δεδομένα και να τα μετατρέψουμε σε κάποιες χρήσιμες πληροφορίες. Αυτά τα άρθρα θα σας πουν πώς να συγχωνεύσετε πολλά φύλλα εργασίας σε ένα φύλλο εργασίας χρησιμοποιώντας το VBA.
Παράδειγμα:
Εδώ έχω πάρει μερικά δεδομένα από το διακομιστή που επιστρέφουν δεδομένα σε διαφορετικά φύλλα εργασίας. Πρόσθεσα ένα ακόμη φύλλο και το ονόμασα ως "Master". Άλλα ονόματα φύλλων δεν έχουν σημασία.
Τώρα εκτελέστε αυτήν τη μακροεντολή.
Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master φύλλο για ενοποίηση mtr = φύλλα εργασίας ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Select the Κεφαλίδες ", Τύπος: = 8)" Αντιγραφή κεφαλίδων σε κύριες κεφαλίδες. Αντιγράψτε mtr.Range ("A1") startRow = headers.Row + 1 startCol = headers.Column Debug.Print startRow, startCol 'loop through all φύλλα Για Κάθε ws Σε wb.Worksheets 'εκτός από το κύριο φύλλο από το looping If ws.Name "Master" Στη συνέχεια ws.Activate lastRow = Cells (Rows.Count, startCol). End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Τέλος (xlToLeft). Η στήλη «λαμβάνει δεδομένα από κάθε φύλλο εργασίας και τα αντιγράφει στο κύριο εύρος φύλλων (Κελιά (startRow, startCol), Κελιά (lastRow, lastCol)). Αντιγραφή _ mtr.Range (" A "& mtr.Cells (Rows .Count, 1). End (xlUp). Row + 1) End If Next ws Worksheets ("Master"). Ενεργοποίηση End Sub
Πώς να συγχωνεύσετε φύλλα χρησιμοποιώντας αυτήν τη μακροεντολή VBA;
- Εισαγάγετε ένα νέο φύλλο και ονομάστε το "Master" στο βιβλίο εργασίας. Μετονομάστε το αργότερα αν θέλετε.
- Εισαγάγετε μια ενότητα στον επεξεργαστή VBA και αντιγράψτε τον παραπάνω κώδικα VBA.
- Εκτελέστε τη μακροεντολή.
- Θα σας ζητηθεί να επιλέξετε επικεφαλίδες. Επιλέξτε την επικεφαλίδα και πατήστε OK.
Και γίνεται. Όλα τα φύλλα συγχωνεύονται σε κύρια.
Πως δουλεύει?
Υποθέτω ότι γνωρίζετε τα βασικά της δημιουργίας αντικειμένων και μεταβλητών στο VBA. στο πρώτο μέρος έχουμε δημιουργήσει αντικείμενο και μεταβλητές που θα χρειαστούμε στις λειτουργίες μας.
Λοιπόν, τα περισσότερα από τα πράγματα που εξήγησα χρησιμοποιώντας σχόλια σε κώδικα vba. Ας δούμε το κύριο μέρος αυτού του κώδικα vba.
Για κάθε ws Σε wb.Worksheets 'εκτός από το κύριο φύλλο από το looping If ws.Name "Master" Στη συνέχεια ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns Καταμέτρηση). Τέλος (xlToLeft). Η στήλη «λάβετε δεδομένα από κάθε φύλλο εργασίας και αντιγράψτε τα στο κύριο εύρος φύλλων (Κελιά (startRow, startCol), Κελιά (lastRow, lastCol)). Αντιγραφή _ mtr.Range (" A "& mtr Κελιά (Rows.Count, 1). End (xlUp). Row + 1) End If Next ws
Σε παλαιότερα άρθρα μάθαμε πώς να περιηγούμαστε σε φύλλα και πώς να λαμβάνουμε την τελευταία γραμμή και στήλη χρησιμοποιώντας το vba.
Εδώ αναλύουμε κάθε φύλλο στο κύριο βιβλίο εργασίας χρησιμοποιώντας το βρόχο.
Για κάθε ws Σε wb. Φύλλα εργασίας
Στη συνέχεια, εξαιρούμε το "κύριο" φύλλο από το looping, αφού θα ενοποιήσουμε τα δεδομένα μας σε αυτό το φύλλο.
Στη συνέχεια παίρνουμε την τελευταία σειρά και τον αριθμό της τελευταίας στήλης.
Τώρα η επόμενη γραμμή είναι πολύ σημαντική. Έχουμε κάνει πολλές λειτουργίες σε μία γραμμή.
Εύρος (Κελιά (startRow, startCol), Κελιά (lastRow, lastCol)). Αντιγραφή _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp). Row + 1)
Αρχικά σχηματίζουμε ένα εύρος χρησιμοποιώντας startRow, startCol και lastRow και lastCol.
Εύρος (Κελιά (startRow, startCol), Κελιά (lastRow, lastCol)) Το έχουμε αντιγράψει χρησιμοποιώντας τη μέθοδο αντιγραφής εύρους. Εύρος (Κελιά (startRow, startCol), Κελιά (lastRow, lastCol)). Αντιγραφή Το επικολλήσαμε απευθείας στο πρώτο κενό κελί μετά το τελευταίο μη κενό κελί στη στήλη Α του κύριου φύλλου (mtr.Cells (Rows.Count, 1). Τέλος (xlUp). Σειρά + 1). Range (Cells (startRow, startCol), Cells (lastRow, lastCol)). Αντιγραφή _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1). End (xlUp). Row + 1)
Αυτός ο βρόχος εκτελείται για όλα τα φύλλα και αντιγράφει τα δεδομένα κάθε φύλλου στο κύριο φύλλο.
Τέλος, στο τέλος της μακροεντολής ενεργοποιούμε το κύριο φύλλο για να δούμε την έξοδο.
Λοιπόν, ναι, έτσι μπορείτε να συγχωνεύσετε κάθε φύλλο σε ένα βιβλίο εργασίας. Ενημερώστε με εάν έχετε οποιαδήποτε ερώτηση σχετικά με αυτόν τον κώδικα VBA ή οποιοδήποτε θέμα excel στην παρακάτω ενότητα σχολίων.
Λήψη αρχείου:
Σχετικά Άρθρα:
Πώς να περάσετε από τα φύλλα
πώς να αποκτήσετε την τελευταία γραμμή και στήλη χρησιμοποιώντας το vba
Διαγράψτε φύλλα χωρίς προτροπές επιβεβαίωσης χρησιμοποιώντας VBA στο Microsoft Excel
Προσθήκη και αποθήκευση νέου βιβλίου εργασίας χρησιμοποιώντας το VBA στο Microsoft Excel 2016
Εμφάνιση μηνύματος στη γραμμή κατάστασης του Excel VBA
Απενεργοποιήστε τα μηνύματα προειδοποίησης χρησιμοποιώντας το VBA στο Microsoft Excel 2016
Δημοφιλή άρθρα:
Η συνάρτηση VLOOKUP στο Excel
COUNTIF στο Excel 2016
Πώς να χρησιμοποιήσετε τη συνάρτηση SUMIF στο Excel