Добавянето и изтриването на редове е част от ежедневните общи задачи при работа с Excel.
Въпреки че можете да направите това лесно от самия работен лист, понякога може да искате да използвате маршрута VBA за изтриване на редове в Excel. Това могат да бъдат изтриване на определен ред, множество редове в селекцията, изтриване на алтернативни редове или такива, които имат определена стойност в него.
В този урок ще ви покажа как да изтриете редове в Excel с помощта на VBA (множество сценарии).
Така че нека започнем!
Изтрийте цял ред с помощта на VBA
За да изтриете цял ред в Excel с помощта на VBA, трябва да използвате метода EntireRow.Delete.
Например, ако искате да изтриете целия първи ред в работен лист, можете да използвате кода по -долу:
Sub DeleteEntireRow () Редове (1) .EntireRow.Delete End Sub
Горният код първо определя реда, който трябва да бъде изтрит (което се прави чрез посочване на номера в скоби) и след това използва метода EntireRow.Delete, за да го изтрие.
Можете също да изтриете няколко реда, като посочите тези редове в кода.
Например, кодът по -долу ще изтрие ред номер 1, 5 и 9 в работния лист:
Sub DeleteEntireRow () Редове (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 за цялата селекция.
Изтриване на алтернативни редове (или Изтриване на всеки трети/четвърти/N -ти ред)
Понякога може да получите изхвърляне на данни, където всеки втори ред (или трети, четвърти или N -ти ред) е безполезен и трябва да бъде изтрит.
Работих с финансови данни, където всеки втори ред беше празен и трябваше да бъде изтрит.
Това е типът сценарий, при който 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" Тогава клетки (i, 2) .EntireRow.Delete End If Next i End Sub
Горният код първо отчита общия брой редове в селекцията. Това ще гарантира, че цикълът се изпълнява само толкова пъти. След това използва цикъла „For Next“, за да премине през всички клетки в колона 2.
След това изразът IF THEN ELSE се използва за проверка на стойността във всяка клетка в колона 2. И в случай, че стойността/текстът съвпада с посочения текст (който е „Принтер“ в този пример).
В този пример проверих дали текстът съответства на определен низ или не. Можете също да направите това със стойности. Например можете да изтриете всички редове, където стойността на продажбата е по -малка от 1000 или повече от 1000.
Забележка: Важно нещо, което трябва да се отбележи тук, е, че цикълът работи от Избор.Редове.Брои до 1 за да се уверите, че при изтриване на ред, това не влияе на редовете над него.
Как да използвате този VBA код
Сега нека ви покажа как да използвате всички кодове, споменати в този урок, за да изтриете целия ред.
Трябва да копирате и поставите тези кодове в модул в Excel VB Editor. След като копирате тези кодове, можете да стартирате макро кодовете.
По -долу са стъпките за копиране и поставяне на тези VBA кодове в модул:
- Задръжте клавиша ALT и натиснете клавиша F11 (или Функция + Опция + F11 в Mac). Това ще отвори VB Editor
- В редактора на VB ще имате изследователя на проекта вляво. Ако не го виждате, отидете на опцията Изглед и след това щракнете върху Project Explorer.
- Щракнете с десния бутон върху всеки обект в Project Explorer (за работната книга, в която искате да стартирате кода).
- Отидете на Вмъкване и след това щракнете върху Модул. Това ще вмъкне нов модул за работната книга
- Копирайте и поставете горните кодове в модула.
И за да стартирате тези кодове, можете да поставите курсора навсякъде в кода (който искате да стартирате) и да натиснете клавиша F5 (или щракнете върху зеления триъгълник в лентата с инструменти на VBA).
Написал съм и подробен урок за различни начини за стартиране на VBA макро кодове в Excel.
В случай, че се налага да използвате някой от тези кодове доста често, можете също да обмислите добавянето им към личната работна книга за макроси и след това към QAT. По този начин кодът ще бъде достъпен за вас във всяка от вашите работни книги с едно щракване.Това бяха някои VBA кодове, които можете да използвате за изтриване на цели редове в Excel (в различни сценарии). Същата логика може да се приложи и в случай, че искате да изтриете колони вместо редове (със съответната корекция в примерите с кода).
Надявам се, че сте намерили този урок за полезен!