Този урок ще покаже как да изтриете или вмъкнете редове въз основа на стойностите на клетката.
Изтриване на ред въз основа на стойността на клетката
Това ще премине през диапазон и ще изтрие редове, ако колона А казва „изтриване“.
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Декларирайте променливиDim LastRow As Long, FirstRow As LongDim Row As LongС ActiveSheet„Определете първия и последния редFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row„Циклични редове (отдолу нагоре)For Row = LastRow To FirstRow Стъпка -1Ако .Range ("A" & Row) .Value = "delete" Тогава.Range ("A" & Row) .EntireRow.DeleteКрай АкоСледващ редКрай сEnd Sub |
Трябва да започнем цикъла с най -долния ред, защото изтриването на ред ще измести данните, прескачайки редовете, ако завъртите отгоре надолу.
Също така забележете, че вместо да въвеждаме ръчно в последния ред, ние изчисляваме последния използван ред.
Изтриване на ред - Въз основа на филтър
В предишния пример се въртяхме през редовете, изтривайки всеки ред, който отговаря на критериите. Като алтернатива можем да използваме автофилтъра на Excel за филтриране на редове въз основа на някои критерии и след това да изтрием видимите редове:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Обявете ws променливаЗатъмнете като работен листЗадайте ws = ActiveSheet'Нулиране на съществуващите филтриНа грешка възобновяване следващоws.ShowAllDataПри грешка GoTo 0„Прилагане на филтъраws.Range ("a1: d100"). Поле за автофилтър: = 1, Критерии1: = "изтриване"„Изтриване на редовеApplication.DisplayAlerts = Falsews.Range ("a1: d100"). SpecialCells (xlCellTypeVisible).Application.DisplayAlerts = Вярно'Изчистване на филтъраНа грешка възобновяване следващоws.ShowAllDataПри грешка GoTo 0End Sub |
Изтриване на ред въз основа на клетъчни критерии
Това ще премине през диапазон, изтривайки редове, ако клетката в колона А отговаря на определени критерии (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Декларирайте променливиDim LastRow As Long, FirstRow As LongDim Row As LongС ActiveSheet„Определете първия и последния редFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row„Циклични редове (отдолу нагоре)For Row = LastRow To FirstRow Стъпка -1Ако .Range ("A" & Row) .Value <0 Тогава.Range ("A" & Row) .EntireRow.DeleteКрай АкоСледващ редКрай сEnd Sub |
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„Циклични редове (отдолу нагоре)For Row = LastRow To FirstRow Стъпка -1Ако .Range ("A" & Row) .Value = "" Тогава.Range ("A" & Row) .EntireRow.DeleteКрай АкоСледващ редКрай сEnd Sub |
Изтриване на празен ред
Като алтернатива, ако искате да изтриете ред, ако целият ред е празен (Щракнете върху връзката за малко по -различен метод), можете да използвате този код:
1234567891011121314151617181920 | Sub DeleteBlankRows ()„Декларирайте променливиDim LastRow As Long, FirstRow As LongDim Row As LongС ActiveSheet„Определете първия и последния редFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row„Циклични редове (отдолу нагоре)For Row = LastRow To FirstRow Стъпка -1Ако WorksheetFunction.CountA (.Rows (Row)) = 0 Тогава.Rows (Row) .EntireRow.DeleteКрай АкоСледващ редКрай сEnd Sub |
Изтрийте ред, ако клетката съдържа стойност
Това ще премине през диапазон, изтривайки ред, ако клетката в колона А не е празна:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()„Декларирайте променливиDim LastRow As Long, FirstRow As LongDim Row As LongС ActiveSheet„Определете първия и последния редFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row„Циклични редове (отдолу нагоре)For Row = LastRow To FirstRow Стъпка -1If .Range ("A" & Row) .Value "" Тогава.Range ("A" & Row) .EntireRow.DeleteКрай АкоСледващ редКрай сEnd Sub |
Уморени ли сте от търсене на примери за VBA код? Опитайте AutoMacro!
Вмъкване на ред въз основа на стойността на клетката
Това ще премине през диапазон, вмъквайки редове, ако определена клетка в този ред казва „вмъкване“:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()„Декларирайте променливиDim LastRow As Long, FirstRow As LongDim Row As LongС ActiveSheet„Определете първия и последния редFirstRow = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row„Циклични редове (отдолу нагоре)For Row = LastRow To FirstRow Стъпка -1Ако .Range ("A" & Row) .Value = "insert" Тогава.Range ("A" & Row) .EntireRow.InsertКрай АкоСледващ редКрай сEnd Sub |