Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление строк по поиску - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Удаление строк по поиску
Tigron Дата: Среда, 08.12.2021, 15:53 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 0% ±

Доброго дня. Столкнулся с проблеммкой, может кто-нибудь сможет помочь: нужно написать макрос, который будет пробегаться по столбцу все таблицы( длинна таблицы не ограниченна). находить в первом столбце слово "Пусто" и удалять эту строку и ещё две строки над ней... написал формулу которая проставляет это значение "Пусто" ,а вот с макросом беда...
 
Ответить
СообщениеДоброго дня. Столкнулся с проблеммкой, может кто-нибудь сможет помочь: нужно написать макрос, который будет пробегаться по столбцу все таблицы( длинна таблицы не ограниченна). находить в первом столбце слово "Пусто" и удалять эту строку и ещё две строки над ней... написал формулу которая проставляет это значение "Пусто" ,а вот с макросом беда...

Автор - Tigron
Дата добавления - 08.12.2021 в 15:53
jun Дата: Среда, 08.12.2021, 19:26 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 43 ±
Замечаний: 0% ±

Посмотрите код (работает на активном листе)
[vba]
Код
Sub FindAndDelete()
    Dim i As Long, sRow As Long, k
    
    With ActiveSheet
        sRow = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = sRow To 1 Step -1
            If LCase(Cells(i, 1)) = "ïóñòî" Then
            For k = i To i - 2 Step -1
            .Rows(k).EntireRow.Delete
            Next k
            End If
        Next i
    End With
  
End Sub
[/vba]
 
Ответить
СообщениеПосмотрите код (работает на активном листе)
[vba]
Код
Sub FindAndDelete()
    Dim i As Long, sRow As Long, k
    
    With ActiveSheet
        sRow = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = sRow To 1 Step -1
            If LCase(Cells(i, 1)) = "ïóñòî" Then
            For k = i To i - 2 Step -1
            .Rows(k).EntireRow.Delete
            Next k
            End If
        Next i
    End With
  
End Sub
[/vba]

Автор - jun
Дата добавления - 08.12.2021 в 19:26
msi2102 Дата: Вторник, 14.12.2021, 09:38 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 415
Репутация: 129 ±
Замечаний: 0% ±

Excel 2007
Можно ещё так
[vba]
Код
Sub Del_Rows()
Dim r As Long, rng As Range
    For r = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(r, 1) = "Пусто" Then
            If r <= 3 Then MsgBox "Первое ПУСТО слишком близко к краю": Exit Sub
            If rng Is Nothing Then Set rng = Union(Rows(r), Rows(r - 1), Rows(r - 2)) Else Set rng = Union(rng, Rows(r), Rows(r - 1), Rows(r - 2))
        End If
    Next r
    If Not rng Is Nothing Then rng.Delete
End Sub

[/vba]
 
Ответить
СообщениеМожно ещё так
[vba]
Код
Sub Del_Rows()
Dim r As Long, rng As Range
    For r = 1 To ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(r, 1) = "Пусто" Then
            If r <= 3 Then MsgBox "Первое ПУСТО слишком близко к краю": Exit Sub
            If rng Is Nothing Then Set rng = Union(Rows(r), Rows(r - 1), Rows(r - 2)) Else Set rng = Union(rng, Rows(r), Rows(r - 1), Rows(r - 2))
        End If
    Next r
    If Not rng Is Nothing Then rng.Delete
End Sub

[/vba]

Автор - msi2102
Дата добавления - 14.12.2021 в 09:38
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!