Ez az oktatóanyag bemutatja, hogyan lehet sorokat törölni vagy beszúrni a cellaértékek alapján.
Sor törlése a cella értéke alapján
Ez végigmegy egy tartományon, és törli a sorokat, ha az A oszlop azt mondja: „törlés”.
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Változók deklarálásaDim LastRow Long, FirstRow As LongHalvány sor, amilyen hosszúActiveSheet segítségével„Határozza meg az első és az utolsó sortElső sor = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sorok áthidalása (alulról felfelé)Sorhoz = Utolsó sor az első sorhoz -1. lépésHa .Range ("A" és sor) .Value = "delete" Akkor.Range ("A" és sor) .EntireRow.DeleteVége HaKövetkező sorVége ezzelEnd Sub |
A ciklust az alsó sorral kell kezdenünk, mert egy sor törlése eltolja az adatokat, és kihagyja a sorokat, ha felülről lefelé teker.
Azt is vegye figyelembe, hogy az utolsó sor kézi bevitele helyett az utoljára használt sort számoljuk ki.
Sor törlése - szűrő alapján
Az előző példában végigcsempésztük a sorokat, minden olyan sort törölve, amely megfelel a feltételeknek. Alternatív megoldásként használhatjuk az Excel automatikus szűrőjét, hogy bizonyos feltételek alapján szűrjük a sorokat, majd töröljük a látható sorokat:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Deklarálja a ws változótDim ws munkalapkéntÁllítsa be ws = ActiveSheet'Állítsa vissza a meglévő szűrőketHiba esetén Folytassa a következőtws.ShowAllDataGoTo 0 hiba esetén'Szűrő alkalmazásaws.Range ("a1: d100"). Automatikus szűrő mező: = 1, Feltételek1: = "törlés"'Sorok törléseApplication.DisplayAlerts = Hamisws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = Igaz'Törölje a szűrőtHiba esetén Folytassa a következőtws.ShowAllDataGoTo 0 hiba eseténEnd Sub |
Sor törlése cellakritériumok alapján
Ez végigmegy egy tartományon, és törli a sorokat, ha az A oszlop cella megfelel bizonyos feltételeknek (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Változók deklarálásaDim LastRow Long, FirstRow As LongHalvány sor, amilyen hosszúActiveSheet segítségével„Határozza meg az első és az utolsó sortElső sor = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sorok áthidalása (alulról felfelé)Sorhoz = Utolsó sor az első sorhoz -1. lépésHa .Range ("A" és sor) .Érték <0 Akkor.Range ("A" és sor) .EntireRow.DeleteVége HaKövetkező sorVége ezzelEnd Sub |
VBA programozás | A kódgenerátor működik az Ön számára!
Törölje a sort, ha a cella üres
Ez végigmegy egy tartományon, és törli a sort, ha az A oszlop cellája üres:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Változók deklarálásaDim LastRow Long, FirstRow As LongHalvány sor, amilyen hosszúActiveSheet segítségével'Határozza meg az első és az utolsó sortElső sor = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .RowLoop sorok (alulról felfelé)Sorhoz = Utolsó sor az első sorhoz -1. lépésHa .Range ("A" & Sor) .Value = "" Akkor.Range ("A" és sor) .EntireRow.DeleteVége HaKövetkező sorVége ezzelEnd Sub |
Üres sor törlése
Alternatív megoldásként, ha törölni szeretne egy sort, ha az egész sor üres (kattintson a linkre egy kicsit más módszerért), használja ezt a kódot:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Változók deklarálásaDim LastRow Long, FirstRow As LongHalvány sor, amilyen hosszúActiveSheet segítségével'Határozza meg az első és az utolsó sortElső sor = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .RowLoop sorok (alulról felfelé)Sorhoz = Utolsó sor az első sorhoz -1. lépésHa WorksheetFunction.CountA (.Rows (Row)) = 0 Akkor.Sorok (sor) .EntireRow.DeleteVége HaKövetkező sorVége ezzelEnd Sub |
Törölje a sort, ha a cella értéket tartalmaz
Ez végigmegy egy tartományon, és törli a sort, ha az A oszlop cellája nem üres:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Változók deklarálásaDim LastRow Long, FirstRow As LongHalvány sor, amilyen hosszúActiveSheet segítségével„Határozza meg az első és az utolsó sortElső sor = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .RowLoop sorok (alulról felfelé)Sorhoz = Utolsó sor az első sorhoz -1. lépésHa .Range ("A" & Sor) .Érték "" Akkor.Range ("A" és sor) .EntireRow.DeleteVége HaKövetkező sorVége ezzelEnd Sub |
Unod már a VBA kódpéldák keresését? Próbálja ki az AutoMacro -t!
Sor beszúrása a cella értéke alapján
Ez végigmegy egy tartományon, és sorokat szúr be, ha a sor egy adott cellája azt mondja: „beszúrás”:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Változók deklarálásaDim LastRow Long, FirstRow As LongHalvány sor, amilyen hosszúActiveSheet segítségével„Határozza meg az első és az utolsó sortElső sor = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Sorok áthidalása (alulról felfelé)Sorhoz = Utolsó sor az első sorhoz -1. lépésHa .Range ("A" és sor) .Value = "insert" Then.Range ("A" és sor) .EntireRow.InsertVége HaKövetkező sorVége ezzelEnd Sub |