У цьому посібнику буде показано, як видаляти або вставляти рядки на основі значень комірок.
Видалити рядок на основі значення комірки
Це дозволить прокрутити діапазон і видалити рядки, якщо стовпець А говорить "видалити".
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 | ПідфільтрAndDeleteRows ()'Оголосити змінну wsЗатемнити як робочий аркушВстановіть ws = ActiveSheet'Скинути наявні фільтриУвімкнути Помилка Відновити Даліws.ShowAllDataПомилка Перейти до 0'Застосувати фільтрws.Range ("a1: d100"). Поле автофільтра: = 1, Критерії1: = "видалити"'Видалити рядкиApplication.DisplayAlerts = Неправдаws.Range ("a1: d100"). SpecialCells (xlCellTypeVisible). ВидалитиApplication.DisplayAlerts = Правда'Очистити фільтрУвімкнути Помилка Відновити Даліws.ShowAllDataПомилка Перейти до 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 | Генератор коду працює для вас!
Видалити рядок, якщо комірка порожня
Це прокрутить діапазон, видаливши рядок, якщо клітинка у стовпці А порожня:
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 Крок -1Якщо .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 |