Изтриване или вмъкване на редове въз основа на стойността на клетката

Този урок ще покаже как да изтриете или вмъкнете редове въз основа на стойностите на клетката.

Изтриване на ред въз основа на стойността на клетката

Това ще премине през диапазон и ще изтрие редове, ако колона А казва „изтриване“.

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

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

wave wave wave wave wave