Ez a bemutató a sorok és oszlopok törlésének különböző módjait mutatja be az Excelben a VBA segítségével.
Teljes sor vagy oszlop törlése
Egy teljes sor törléséhez a VBA-ban ezt a kódsort használjuk:
Rows(1).Delete
A sor törléséhez a Delete módszert használjuk.
A Rows objektumra való hivatkozás helyett a sorokra a Range objektumuk alapján is hivatkozhatunk az EntireRow segítségével:
Range("a1").EntireRow.Delete
Hasonlóan egy teljes oszlop törléséhez a következő kódsorokat használjuk:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Második sor vagy oszlop törlése
Ezzel a logikával egyszerre több sort is törölhetünk:
Rows("1:3").Delete
vagy oszlopot:
Columns("A:C").Delete
Megjegyezzük, hogy itt idézőjelekkel körülvett konkrét sor- és oszlopszámokra/betűkre hivatkozunk.
Naná, hogy egy tartomány EntireRow-jára is hivatkozhatunk:
Range("a1:a10").EntireRow.Delete
Figyelem: Az alábbi példák csak a sorok törlését mutatják be, azonban mint fentebb látható, a szintaxis gyakorlatilag azonos az oszlopok törlésére.
Üres/üres sorok törlése
Ez a példa akkor töröl egy sort, ha az egész sor üres:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Ez az Excel munkalap funkcióját használja: COUNTA.
Sor törlése, ha a cella üres
Ez egy sort töröl, ha a sor egy adott oszlopa üres (ebben az esetben a B oszlop):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Sor törlése a cellák értéke alapján
Ez egy tartományon végighalad, és sorokat töröl, ha a sor egy bizonyos cellájának értéke azt mondja, hogy “töröl”.
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Még több sor és oszlop törlési példa
Duplikált sorok törlése
Ez a kód törli az összes duplikált sort egy tartományban:
Range("b2:c100").RemoveDuplicates Columns:=2
Megjegyezzük, hogy az oszlopokat:=2-re állítottuk. Ez azt mondja a VBA-nak, hogy az adatok első két oszlopát is ellenőrizze, amikor azt vizsgálja, hogy a sorok duplikáltak-e. Csak akkor talál duplikátumot, ha mindkét oszlopban vannak duplikált értékek.
Ha ezt 1-re állítottuk volna, akkor csak az első sort ellenőriztük volna duplikált értékek szempontjából.
Táblázat sorainak törlése
Ez a kód a ListObjects hivatkozással törli a második sort a táblázatban.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Szűrt sorok törlése
Csak a szűrés után látható sorok törlése:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Tartományban lévő sorok törlése
Ez a kód a tartományban lévő összes sort törli:
Range("a1:a10").EntireRow.Delete
Kiválasztott sorok törlése
Ez a kód az összes kijelölt sort törli:
Selection.EntireRow.Delete
Utolsó sor törlése
Ez a kód a B oszlop utolsó használt sorát törli:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
A 2-t 1-re változtatva az A oszlop utolsó használt sorát törölheti, stb.:
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Oszlopok törlése szám szerint
Az oszlopok szám szerinti törléséhez a következő kódot használja:
Columns (2).Delete