Αυτό το σεμινάριο θα δείξει τον τρόπο διαγραφής ή εισαγωγής γραμμών με βάση τις τιμές των κελιών.
Διαγραφή γραμμής με βάση την τιμή κελιού
Αυτό θα κάνει βρόχο σε μια περιοχή και θα διαγράψει γραμμές εάν η στήλη Α λέει "διαγραφή".
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()«Δήλωση μεταβλητώνDim LastRow As Long, FirstRow As LongDim Row As LongΜε το ActiveSheet«Ορίστε την πρώτη και την τελευταία σειράFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)Για σειρά = LastRow To FirstRow Βήμα -1Εάν .Range ("A" & Row) .Value = "delete" Τότε.Range ("A" & Row) .IntireRow.DeleteΤέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο |
Πρέπει να ξεκινήσουμε τον βρόχο με την κάτω σειρά γιατί η διαγραφή μιας σειράς θα μετατοπίσει τα δεδομένα, παρακάμπτοντας γραμμές αν κάνετε βρόχο από πάνω προς τα κάτω.
Επίσης, παρατηρήστε ότι αντί για μη αυτόματη εισαγωγή στην τελευταία σειρά, υπολογίζουμε την τελευταία χρησιμοποιούμενη σειρά.
Διαγραφή γραμμής - με βάση το φίλτρο
Στο προηγούμενο παράδειγμα, κάναμε βρόχο στις γραμμές, διαγράφοντας κάθε γραμμή που πληροί τα κριτήρια. Εναλλακτικά, μπορούμε να χρησιμοποιήσουμε το Αυτόματο φίλτρο του Excel για να φιλτράρουμε σειρές με βάση ορισμένα κριτήρια και στη συνέχεια να διαγράψουμε τις ορατές σειρές:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()«Δηλώστε μεταβλητή wsDim ws Ως φύλλο εργασίαςΟρισμός ws = ActiveSheet«Επαναφορά υπαρχόντων φίλτρωνΣτο Σφάλμα Συνέχιση Επόμενοws.ShowAllDataΣφάλμα GoTo 0«Εφαρμογή φίλτρουws.Range ("a1: d100"). Πεδίο AutoFilter: = 1, Criteria1: = "delete"'Διαγραφή σειρώνApplication.DisplayAlerts = Λάθοςws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible). ΔιαγραφήApplication.DisplayAlerts = True'Εκκαθάριση φίλτρουΣτο Σφάλμα Συνέχιση Επόμενοws.ShowAllDataΣφάλμα GoTo 0Τέλος υπο |
Διαγραφή σειράς βάσει κριτηρίων κυψέλης
Αυτό θα πραγματοποιήσει βρόχο σε ένα εύρος, διαγράφοντας γραμμές εάν το κελί της στήλης Α πληροί ορισμένα κριτήρια (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()«Δήλωση μεταβλητώνDim LastRow As Long, FirstRow As LongDim Row As LongΜε το ActiveSheet«Ορίστε την πρώτη και την τελευταία σειράFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)Για σειρά = LastRow To FirstRow Βήμα -1Εάν .Range ("A" & Row) .Αξία <0 Τότε.Range ("A" & Row) .IntireRow.DeleteΤέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο |
Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!
Διαγραφή γραμμής εάν το κελί είναι κενό
Αυτό θα πραγματοποιήσει βρόχο σε ένα εύρος, διαγράφοντας μια γραμμή εάν ένα κελί στη στήλη Α είναι κενό:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()«Δήλωση μεταβλητώνDim LastRow As Long, FirstRow As LongDim Row As LongΜε το ActiveSheet«Ορίστε την πρώτη και την τελευταία σειράFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)Για σειρά = LastRow To FirstRow Βήμα -1Εάν .Range ("A" & Row) .Value = "" Τότε.Range ("A" & Row) .IntireRow.DeleteΤέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο |
Διαγραφή κενής σειράς
Εναλλακτικά, εάν θέλετε να διαγράψετε μια γραμμή εάν ολόκληρη η σειρά είναι κενή (Κάντε κλικ στο σύνδεσμο για μια ελαφρώς διαφορετική μέθοδο), μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό:
1234567891011121314151617181920 | Sub DeleteBlankRows ()«Δήλωση μεταβλητώνDim LastRow As Long, FirstRow As LongDim Row As LongΜε το ActiveSheet«Ορίστε την πρώτη και την τελευταία σειράFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)Για σειρά = LastRow To FirstRow Βήμα -1Εάν WorksheetFunction.CountA (.Rows (Row)) = 0 Τότε. Σειρές (Σειρά). Ολόκληρη. ΔιαγραφήΤέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο |
Διαγραφή γραμμής εάν το κελί περιέχει αξία
Αυτό θα κάνει ένα βρόχο μέσα σε ένα εύρος, διαγράφοντας μια γραμμή εάν το κελί στη στήλη Α δεν είναι κενό:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()«Δήλωση μεταβλητώνDim LastRow As Long, FirstRow As LongDim Row As LongΜε το ActiveSheet«Ορίστε την πρώτη και την τελευταία σειράFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)Για σειρά = LastRow To FirstRow Βήμα -1Αν. Range ("A" & Row). Value "" Τότε.Range ("A" & Row) .IntireRow.DeleteΤέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο |
Κουραστήκατε να ψάχνετε για παραδείγματα κώδικα VBA; Δοκιμάστε το AutoMacro!
Εισαγωγή γραμμής με βάση την τιμή κελιού
Αυτό θα κάνει βρόχο σε μια περιοχή, εισάγοντας γραμμές εάν ένα συγκεκριμένο κελί σε αυτήν τη σειρά λέει "εισαγωγή":
1234567891011121314151617181920 | Υπο InsertRowsBasedonCellValue ()«Δήλωση μεταβλητώνDim LastRow As Long, FirstRow As LongDim Row As LongΜε το ActiveSheet«Ορίστε την πρώτη και την τελευταία σειράFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Loop Through Rows (Bottom to Top)Για σειρά = LastRow To FirstRow Βήμα -1Εάν .Range ("A" & Row) .Value = "insert" Τότε.Range ("A" & Row) .IntireRow InsertΤέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο |