Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2019, 07:15   #1
Kent_hd777
Пользователь
 
Регистрация: 18.02.2019
Сообщений: 10
По умолчанию Помогите подправить код макроса для удаления строк....

Здравствуйте, такая ситуация, только начинаю осваивать макросы, дабы упростить себе работу, но дело идет медленно, и вот чуток хочу полегче сделать. В чем суть? в примере exel есть данные которые забиты туда через одно место. подскажите можно ли сделать так что бы отдельные строки остались а все остальные удалить. но есть нюанс выборку нужно сделать так чтобы учитывались только начальные символы. блин не знаю как объяснить, в примере покрасил строки в зеленый которые нужно оставить а красным что не нужно. так же там есть макрос который удаляет строки по слову. можно ли его подправить что бы удалял только те строки которые отмечены. exel с поддержкой макроса не могу выложить поэтому он написан на 2 листе.
Вложения
Тип файла: xlsx Пример.xlsx (11.7 Кб, 5 просмотров)
Kent_hd777 вне форума Ответить с цитированием
Старый 15.03.2019, 09:43   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

В чем именно проблема, не знаете что писать в ""по_этому_слову_нужно удалить"?
Тогда вручную красьте ячейки в красный цвет, строки которые надо удалять (как сделали в примере)
Код:
Sub DeleteRows()
    Dim DelColor
    Dim StayColor
    Dim LastRow As Integer
    Dim R As Integer
    LastRow = ActiveSheet.UsedRange.Rows.Count
    For R = LastRow To 1 Step -1
        With ActiveSheet
            If .Cells(R, "O").Interior.Color = 255 Then
                .Rows(R).EntireRow.Delete
            ElseIf .Cells(R, "O").Interior.Color = 4697456 Then
                'TODO SOME ACTIONS
            End If
        End With
    Next R
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 15.03.2019, 10:09   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Kent_hd777 Посмотреть сообщение
но есть нюанс выборку нужно сделать так чтобы учитывались только начальные символы. блин не знаю как объяснить, в примере покрасил строки в зеленый которые нужно оставить а красным что не нужно.
Вы по какому принципу выбирали строчки - сможете детально объяснить?

в начале строки есть несколько пробелов (строго от одного пробела до трёх пробелов) и цифра (остальное в строке не проверяем) - тогда эту строчку оставляем,
иначе - удаляем.
Так?

Последний раз редактировалось Serge_Bliznykov; 15.03.2019 в 10:13.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2019, 00:26   #4
Kent_hd777
Пользователь
 
Регистрация: 18.02.2019
Сообщений: 10
По умолчанию

Совершенно верно, в любом случаи с начало будет два пробела, а там в зависимости от номера, будет либо ещё пробел либо уже цифра..
Kent_hd777 вне форума Ответить с цитированием
Старый 18.03.2019, 07:16   #5
Kent_hd777
Пользователь
 
Регистрация: 18.02.2019
Сообщений: 10
По умолчанию

в начале строки есть несколько пробелов (строго от одного пробела до трёх пробелов) и цифра (остальное в строке не проверяем) - тогда эту строчку оставляем,
иначе - удаляем.
Так?

Совершенно точно. Вот я и не знаю как можно это дело упростить. чтобы через макрос, удалить лишнее и в дальнейшем использовать эти данные.
Kent_hd777 вне форума Ответить с цитированием
Старый 19.03.2019, 09:58   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Kent_hd777 Посмотреть сообщение
Совершенно точно. Вот я и не знаю как можно это дело упростить. чтобы через макрос, удалить лишнее и в дальнейшем использовать эти данные
вот макрос, который оставит только те строчки, у которых в столбце A

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в начале строки есть несколько пробелов (строго от одного пробела до трёх пробелов) и цифра (остальное в строке не проверяем)
остальные строчки будут удалены

Код:
Sub DeleteBadRows()
    Dim LastRow As Integer
    Dim R As Integer
    Dim Ch As Range
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")
    regex.Pattern = "^\s{1,3}\d"
    regex.Global = True
    
    LastRow = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count
    For R = LastRow To 1 Step -1
        With ActiveWorkbook.ActiveSheet
            If Not regex.Test(.Cells(R, "A").Value) Then
                ' .Cells(R, "O").Interior.Color = 22
                .Rows(R).EntireRow.Delete
            End If
        End With
    Next R
End Sub
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.03.2019, 07:53   #7
Kent_hd777
Пользователь
 
Регистрация: 18.02.2019
Сообщений: 10
По умолчанию

Спасибо огромное!!!! очень сильно выручили.....
Kent_hd777 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос удаления 300 строк после .... lakcin Microsoft Office Excel 3 31.08.2014 15:04
макрос для удаления строк??? mixa2997510 Microsoft Office Excel 3 21.05.2012 13:38
Запрет удаления строк Trimbl Microsoft Office Excel 2 14.12.2010 01:47
Удаления дубликатов строк memo AquaKlaster Общие вопросы Delphi 7 20.07.2009 23:46
Очистка формата после удаления макроса valerij Microsoft Office Excel 2 14.06.2008 12:00