Как да изтриете целия ред в Excel с помощта на VBA (примери)

Добавянето и изтриването на редове е част от ежедневните общи задачи при работа с 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 кодове в модул:

  1. Задръжте клавиша ALT и натиснете клавиша F11 (или Функция + Опция + F11 в Mac). Това ще отвори VB Editor
  2. В редактора на VB ще имате изследователя на проекта вляво. Ако не го виждате, отидете на опцията Изглед и след това щракнете върху Project Explorer.
  3. Щракнете с десния бутон върху всеки обект в Project Explorer (за работната книга, в която искате да стартирате кода).
  4. Отидете на Вмъкване и след това щракнете върху Модул. Това ще вмъкне нов модул за работната книга
  5. Копирайте и поставете горните кодове в модула.

И за да стартирате тези кодове, можете да поставите курсора навсякъде в кода (който искате да стартирате) и да натиснете клавиша F5 (или щракнете върху зеления триъгълник в лентата с инструменти на VBA).

Написал съм и подробен урок за различни начини за стартиране на VBA макро кодове в Excel.

В случай, че се налага да използвате някой от тези кодове доста често, можете също да обмислите добавянето им към личната работна книга за макроси и след това към QAT. По този начин кодът ще бъде достъпен за вас във всяка от вашите работни книги с едно щракване.

Това бяха някои VBA кодове, които можете да използвате за изтриване на цели редове в Excel (в различни сценарии). Същата логика може да се приложи и в случай, че искате да изтриете колони вместо редове (със съответната корекция в примерите с кода).

Надявам се, че сте намерили този урок за полезен!

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave