Η προσθήκη και η διαγραφή γραμμών είναι μέρος των καθημερινών κοινών εργασιών κατά την εργασία με το Excel.
Ενώ μπορείτε να το κάνετε αυτό εύκολα από το ίδιο το φύλλο εργασίας, μερικές φορές μπορεί να θέλετε να χρησιμοποιήσετε τη διαδρομή VBA για να διαγράψετε γραμμές στο Excel. Αυτές θα μπορούσαν να είναι η διαγραφή μιας συγκεκριμένης σειράς, πολλαπλών σειρών στην επιλογή, διαγραφής εναλλακτικών σειρών ή εκείνων που έχουν μια συγκεκριμένη τιμή σε αυτήν.
Σε αυτό το σεμινάριο, θα σας δείξω πώς να διαγράψετε σειρές στο Excel χρησιμοποιώντας VBA (πολλαπλά σενάρια).
Ας ξεκινήσουμε λοιπόν!
Διαγράψτε μια ολόκληρη σειρά χρησιμοποιώντας VBA
Για να διαγράψετε μια ολόκληρη σειρά στο Excel χρησιμοποιώντας VBA, πρέπει να χρησιμοποιήσετε τη μέθοδο EntireRow.Delete.
Για παράδειγμα, εάν θέλετε να διαγράψετε ολόκληρη την πρώτη σειρά σε ένα φύλλο εργασίας, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα:
Sub DeleteEntireRow () Rows (1) .EntireRow.Delete End Sub
Ο παραπάνω κώδικας καθορίζει πρώτα τη γραμμή που πρέπει να διαγραφεί (η οποία γίνεται με τον καθορισμό του αριθμού σε παρένθεση) και στη συνέχεια χρησιμοποιεί τη μέθοδο EntireRow.Delete για να τη διαγράψει.
Μπορείτε επίσης να διαγράψετε πολλές σειρές καθορίζοντας αυτές τις σειρές στον κώδικα.
Για παράδειγμα, ο παρακάτω κώδικας θα διαγράψει τον αριθμό γραμμών 1, 5 και 9 στο φύλλο εργασίας:
Sub DeleteEntireRow () Rows (9) .EntireRow.Delete Rows (5) .EntireRow.Delete Rows (1) .EntireRow.Delete End Sub
Ο παραπάνω κώδικας χρησιμοποιεί την ίδια λογική, όπου καθορίζει τους αριθμούς γραμμών και το Excel θα διαγράψει αυτές τις γραμμές μία προς μία.
ΣΗΜΑΝΤΙΚΟ: Όταν διαγράφετε σειρές με κάτι παρόμοιο με τον παραπάνω κώδικα, θυμηθείτε να ξεκινήσετε τη διαγραφή από το κάτω μέρος και μετά ανεβείτε. Για παράδειγμα, σε περίπτωση που ξεκινήσετε από την κορυφή και διαγράψετε πρώτα τη σειρά 1, όλες οι γραμμές από κάτω θα μετατοπιστούν μία σειρά προς τα πάνω και η αρίθμηση θα είναι απενεργοποιημένη (καθώς η σειρά 5 θα γίνει σειρά 4 και ούτω καθεξής)Διαγραφή όλων των γραμμών στην επιλογή
Σε περίπτωση που θέλετε να διαγράψετε όλες τις γραμμές σε ένα επιλεγμένο εύρος κελιών, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα μακροεντολής VBA:
Sub DeleteEntireRow () Selection.EntireRow.Delete End Sub
Ο παραπάνω κώδικας ισχύει για τη μέθοδο EntireRow.Delete σε ολόκληρη την επιλογή.
Διαγραφή εναλλακτικών σειρών (ή Διαγραφή κάθε τρίτης/τέταρτης/έκτης σειράς)
Μερικές φορές, ενδέχεται να λάβετε μια χωματερή δεδομένων όπου κάθε δεύτερη σειρά (ή τρίτη, τέταρτη ή τρίτη σειρά) είναι άχρηστη και πρέπει να διαγραφεί.
Δούλευα με οικονομικά δεδομένα όπου κάθε δεύτερη σειρά ήταν κενή και έπρεπε να διαγραφεί.
Αυτός είναι ο τύπος σεναρίου όπου το VBA πραγματικά λάμπει.
Παρακάτω είναι ο κώδικας VBA που θα περάσει από όλες τις γραμμές στην επιλογή και θα διαγράψει κάθε δεύτερη σειρά:
Sub DeleteAlternateRows () RCount = Selection.Rows.Count For i = RCount To 1 Step -2 Selection.Rows (i) .EntireRow.Delete Next i End Sub
Επιτρέψτε μου να εξηγήσω πώς λειτουργεί αυτός ο κώδικας VBA.
Πρώτον, χρησιμοποίησα μια μεταβλητή RCount για να λάβετε τον συνολικό αριθμό γραμμών στην επιλογή.
Στη συνέχεια, έχω χρησιμοποιήσει ένα βρόχο For Next για να το εκτελέσω όσες φορές υπάρχουν πολλές σειρές. Για παράδειγμα, εάν υπάρχουν 12 σειρές, αυτός ο βρόχος θα τρέξει από 12 έως 1 (δηλαδή, 12 φορές). Είναι σημαντικό να το εκτελέσετε από την τελευταία σειρά στην επιλογή στην πρώτη, καθώς δεν θέλουμε να αλλάξουν οι αριθμοί γραμμών όταν διαγράφεται μια σειρά.
Επίσης, χρησιμοποιείται το Βήμα -2 αφού πρέπει να διαγράψουμε κάθε άλλη σειρά (από κάτω προς τα πάνω). Σε περίπτωση που θέλετε να διαγράψετε κάθε τρίτη σειρά, μπορείτε να χρησιμοποιήσετε -3.
Μέσα στον βρόχο VBA, έχω χρησιμοποιήσει τη μέθοδο Selection.Rows (i) .EntireRow.Delete για να διαγράψω κάθε εναλλακτική γραμμή.
Διαγραφή κενών σειρών με VBA
Μπορείτε επίσης να χρησιμοποιήσετε τη μέθοδο EntireRow.Delete για να διαγράψετε όλες τις κενές σειρές.
Παρακάτω είναι ο κώδικας VBA που θα επιλέξει κενά κελιά στο επιλεγμένο σύνολο δεδομένων και θα διαγράψει ολόκληρη τη σειρά.
Sub DeleteBlankRows () Selection.SpecialCells (xlCellTypeBlanks) .EntireRow.Delete End Sub
Ο παραπάνω κώδικας χρησιμοποιεί την ιδιότητα SpecialCells για να επιλέξει και να διαγράψει όλα τα κελιά που είναι κενά. Αυτή είναι η ίδια μέθοδος που μας επιτρέπει επίσης να χρησιμοποιήσουμε το παράθυρο διαλόγου «Μετάβαση στο ειδικό» για να επιλέξουμε όλα τα κενά κελιά.
Μόλις προσδιοριστούν αυτά τα κενά κελιά χρησιμοποιώντας το SpecialCell, αυτά στη συνέχεια διαγράφονται χρησιμοποιώντας τη μέθοδο EntireRow.Delete.
Σημείωση: Αυτή η μέθοδος επιλέγει κελιά που είναι κενά και δεν ελέγχουν εάν ολόκληρη η γραμμή είναι κενή ή όχι. Έτσι, εάν κάποιο κελί είναι κενό σε μια σειρά, αυτό θα εξακολουθεί να διαγράφει ολόκληρη τη σειρά.Διαγραφή γραμμών με συγκεκριμένη λέξη/τιμή
Μπορείτε επίσης να χρησιμοποιήσετε έναν απλό κώδικα VBA για να περάσετε από κάθε κελί στο επιλεγμένο εύρος και να διαγράψετε όλες τις γραμμές όπου ένα κελί περιέχει ένα συγκεκριμένο κείμενο ή τιμή.
Για παράδειγμα, ας υποθέσουμε ότι έχετε ένα σύνολο δεδομένων και θέλω να διαγράψω όλα τα κελιά που έχουν το κείμενο Εκτυπωτής στη στήλη 2 της επιλογής.
Παρακάτω είναι ο κώδικας που θα το κάνει αυτό:
Sub DeleteRowswithSpecificValue () Για i = Selection.Rows.Count To 1 Step -1 If Cells (i, 2) .Value = "Printer" Then Cells (i, 2) .EntireRow.Delete End If Next i End Sub
Ο παραπάνω κωδικός μετρά πρώτα τον συνολικό αριθμό γραμμών στην επιλογή. Αυτό θα διασφαλίσει ότι ο βρόχος εκτελείται μόνο πολλές φορές. Στη συνέχεια, χρησιμοποιεί τον βρόχο "Για επόμενο" για να περάσει από όλα τα κελιά στη στήλη 2.
Στη συνέχεια, η δήλωση IF THEN ELSE χρησιμοποιείται για τον έλεγχο της τιμής σε κάθε κελί της στήλης 2. Και σε περίπτωση που η τιμή/κείμενο ταιριάζει με το καθορισμένο κείμενο (που είναι «Εκτυπωτής» σε αυτό το παράδειγμα).
Σε αυτό το παράδειγμα, έχω ελέγξει αν το κείμενο ταιριάζει με μια συγκεκριμένη συμβολοσειρά ή όχι. Μπορείτε επίσης να το κάνετε αυτό με τιμές. Για παράδειγμα, μπορείτε να διαγράψετε όλες τις γραμμές όπου η τιμή πώλησης είναι μικρότερη από 1000 ή μεγαλύτερη από 1000.
Σημείωση: Ένα σημαντικό πράγμα που πρέπει να σημειωθεί εδώ είναι ότι ο βρόχος τρέχει από Επιλογή. Σειρές. Μετρήστε σε 1 για να βεβαιωθείτε ότι όταν διαγράφεται μια γραμμή, δεν επηρεάζει τις γραμμές πάνω από αυτήν.
Πώς να χρησιμοποιήσετε αυτόν τον κώδικα VBA
Τώρα επιτρέψτε μου να σας δείξω πώς να χρησιμοποιήσετε όλους τους κωδικούς που αναφέρονται σε αυτό το σεμινάριο για να διαγράψετε ολόκληρη τη σειρά.
Πρέπει να αντιγράψετε και να επικολλήσετε αυτούς τους κωδικούς σε μια λειτουργική μονάδα στο Excel VB Editor. Μόλις αντιγράψετε αυτούς τους κωδικούς, μπορείτε στη συνέχεια να εκτελέσετε τους κώδικες μακροεντολών.
Παρακάτω είναι τα βήματα για την αντιγραφή και επικόλληση αυτών των κωδικών VBA σε μια ενότητα:
- Κρατήστε πατημένο το πλήκτρο ALT και πατήστε το πλήκτρο F11 (ή Function + Option + F11 σε Mac). Αυτό θα ανοίξει το πρόγραμμα επεξεργασίας VB
- Στο VB Editor, θα έχετε τον εξερευνητή έργου στα αριστερά. Εάν δεν το βλέπετε, μεταβείτε στην επιλογή Προβολή και, στη συνέχεια, κάντε κλικ στο Project Explorer.
- Κάντε δεξί κλικ σε οποιοδήποτε αντικείμενο του Project Explorer (για το βιβλίο εργασίας στο οποίο θέλετε να εκτελέσετε τον κώδικα).
- Μεταβείτε στην επιλογή Εισαγωγή και, στη συνέχεια, κάντε κλικ στην ενότητα. Αυτό θα εισαγάγει μια νέα ενότητα για το βιβλίο εργασίας
- Αντιγράψτε και επικολλήστε τους παραπάνω κωδικούς στη μονάδα.
Και για να εκτελέσετε αυτούς τους κωδικούς, μπορείτε να τοποθετήσετε τον κέρσορα οπουδήποτε στον κώδικα (που θέλετε να εκτελέσετε) και να πατήσετε το πλήκτρο F5 (ή κάντε κλικ στο πράσινο τρίγωνο στη γραμμή εργαλείων VBA).
Έχω γράψει επίσης ένα λεπτομερές σεμινάριο για διαφορετικούς τρόπους εκτέλεσης μακροεντολών VBA στο Excel.
Σε περίπτωση που χρειάζεται να χρησιμοποιείτε κάποιον από αυτούς τους κωδικούς αρκετά συχνά, μπορείτε επίσης να σκεφτείτε να τους προσθέσετε στο Personal Macro Workbook και στη συνέχεια στο QAT. Με αυτόν τον τρόπο, ο κωδικός θα είναι διαθέσιμος σε οποιοδήποτε από τα βιβλία εργασίας σας με ένα μόνο κλικ.Αυτοί ήταν λοιπόν μερικοί κωδικοί VBA που μπορείτε να χρησιμοποιήσετε για να διαγράψετε ολόκληρες σειρές στο Excel (σε διαφορετικά σενάρια). Η ίδια λογική μπορεί επίσης να εφαρμοστεί σε περίπτωση που θέλετε να διαγράψετε στήλες αντί για γραμμές (με την αντίστοιχη προσαρμογή στα παραδείγματα κώδικα).
Ελπίζω να βρήκατε χρήσιμο αυτό το σεμινάριο!