Διαγραφή ή εισαγωγή γραμμών με βάση την τιμή κελιού

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

Διαγραφή γραμμής με βάση την τιμή κελιού

Αυτό θα κάνει βρόχο σε μια περιοχή και θα διαγράψει γραμμές εάν η στήλη Α λέει "διαγραφή".

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Τέλος εανΕπόμενη ΣειράΤέλος μεΤέλος υπο
wave wave wave wave wave