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

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

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2016, 18:25   #1
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию Удалить строки при условии

Доброго времени суток!

Уважаемые пользователи данного форума, прошу помочь с макросом, который удаляет строки в файле, когда одновременно выполняются два условия:
графа Z=0 и графа AA=0
Вложения
Тип файла: xlsx ОСВ_по_счетам_ГК_2015_01.xlsx (27.5 Кб, 13 просмотров)
amadeus017 вне форума Ответить с цитированием
Старый 16.02.2016, 19:00   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Sub Del0Z0AA()
  Dim r As Long, rg As Range
  For r = 16 To Cells(Rows.Count, 26).End(xlUp).Row
    If Cells(r, 25) = 0 And Cells(r, 26) = 0 Then If rg Is Nothing Then Set rg = Rows(r) Else Set rg = Union(rg, Rows(r))
  Next
  If Not rg Is Nothing Then rg.Delete
End Sub
Давайте я попытаюсь угадать ход Ваших мыслей:
"Больше ста строк руками удалять... да ну его на фиг! пусть лучше кто-то макрос напишет!"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.02.2016, 20:48   #3
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
[CODE]Sub Del0Z0AA()
Давайте я попытаюсь угадать ход Ваших мыслей:
"Больше ста строк руками удалять... да ну его на фиг! пусть лучше кто-то макрос напишет!"
Вы не правы.
В силу того, что я макросы писать не умею, обратился к пользователям данного сайта за помощью!
Я записываю макросы "макрорекордером" поэтапно, и это именно тот этап, который всегда приходится останавливать запись "макрорекордера", фильтровать эти графы вручную (выставляя равенство этих граф "=0"), удалить отфильтрованные строки и дальше запустить макрос.
Я бухгалтер, а не программист VBA.
amadeus017 вне форума Ответить с цитированием
Старый 16.02.2016, 21:03   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а у меня прицел сьехал Z и AA это 26 и 27 столбец
Код:
If Cells(r, 26) = 0 And Cells(r, 27) = 0 Then ...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 16.02.2016, 21:57   #5
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

IgorGO

Спасибо за код!

Я еще нашел один на другом сайте, может кому пригодится, но он больше по тексту
Код:
Sub УдалениеСтрокПоУсловию()
    Dim ra As Range, delra As Range, ТекстДляПоиска As String
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ТекстДляПоиска = "0"    ' удаляем строки с таким текстом

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
If ra.Row >= 16 Then
        ' если выполняются одновременно следующие условия

        If ra.Cells(26) = 0 And ra.Cells(27) = 0 Then
           ' добавляем строку в диапазон для удаления 

           If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
End If
    Next
    ' если подходящие строки найдены - удаляем их
    If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub

Последний раз редактировалось amadeus017; 16.02.2016 в 22:17.
amadeus017 вне форума Ответить с цитированием
Старый 16.02.2016, 22:39   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от amadeus017 Посмотреть сообщение
Код:
Sub УдалениеСтрокПоУсловию()
    Dim ra As Range, delra As Range, ТекстДляПоиска As String
    Application.ScreenUpdating = False    ' отключаем обновление экрана

    ТекстДляПоиска = "0"    ' удаляем строки с таким текстом

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
If ra.Row >= 16 Then
        ' если выполняются одновременно следующие условия

        If ra.Cells(26) = 0 And ra.Cells(27) = 0 Then
           ' добавляем строку в диапазон для удаления 

           If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
End If
    Next
    ' если подходящие строки найдены - удаляем их
    If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub
Вопрос: зачем нам переменная ТекстДляПоиска и что с ней делать?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 17.02.2016, 04:46   #7
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Вопрос: зачем нам переменная ТекстДляПоиска и что с ней делать?
Да я от куда знаю
Я бухгалтер. Нашел что-то подобное моему запросу, немного подкорректировал под себя, и все.
В том макросе, от куда я его "спер", там в это поле, можно было текст вписывать, при нахождении которого в строках, макрос удалял данные строки.
amadeus017 вне форума Ответить с цитированием
Старый 17.02.2016, 10:08   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

если "прищуриться" то не очень они и разные
Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Sub Del0Z0AA()
  Dim r As Long, rg As Range

 ' перебираем все строки до последней в 26столбце Начиная с 16строки
  For r = 16 To Cells(Rows.Count, 26).End(xlUp).Row
    ' если выполняются одновременно следующие условия
    If Cells(r, 25) = 0 And Cells(r, 26) = 0 Then 
	If rg Is Nothing Then Set rg = Rows(r) Else Set rg = Union(rg, Rows(r)) 
    end if
  Next
    ' если подходящие строки найдены - удаляем их
  If Not rg Is Nothing Then rg.Delete
End Sub
Цитата:
Код:
Sub УдалениеСтрокПоУсловию()
    Dim ra As Range, delra As Range', ТекстДляПоиска As String
    'Application.ScreenUpdating = False    ' отключаем обновление экрана
    'ТекстДляПоиска = "0"    ' удаляем строки с таким текстом

    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
If ra.Row >= 16 Then
        ' если выполняются одновременно следующие условия

        If ra.Cells(26) = 0 And ra.Cells(27) = 0 Then
           ' добавляем строку в диапазон для удаления 

           If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
End If
    Next
    ' если подходящие строки найдены - удаляем их
    If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 19.02.2016, 15:48   #9
amadeus017
Форумчанин
 
Регистрация: 28.05.2014
Сообщений: 158
По умолчанию

Круто!
Я не смотрел, если честно )))
amadeus017 вне форума Ответить с цитированием
Старый 19.02.2016, 16:12   #10
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от amadeus017 Посмотреть сообщение
прошу помочь с макросом, который удаляет строки в файле, когда одновременно выполняются два условия: графа Z=0 и графа AA=0
А зачем макрос собсно? Автофильтр уже включен, отфильтруйте по Z=0 и AA=0, выделите первую видимую строку, Ctrl+Shift+вниз, удалить - строки, снимите фильтр.
Можете эти действия записать в макрос самостоятельно.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
макрос на добавление строки при условии KApSuL Microsoft Office Excel 42 13.09.2012 15:42
удаление строки при условии horpenst Microsoft Office Excel 6 30.03.2011 14:31
выделение строки при определенном условии kursant95 Microsoft Office Excel 4 18.02.2011 18:20
Помогите, пожалуйста, скрыть строки при определенном условии axaptaalex Microsoft Office Excel 4 19.03.2009 21:35
Как в VBA скрыть неиспользуемые строки при условии berliozz Microsoft Office Excel 16 24.11.2008 08:47