Добрый день, подскажите пожалуйста, как написать макрос который пробежит по файлу и если в ячейке столбца G встретиться слово в конце текста "удалить", то он удалить стоку с этой ячейкой. Строки со словом "удалить" в начале и в середине текста, макрос должен оставлять. В данном примере должны удалиться строки 3 и 7
Добрый день, подскажите пожалуйста, как написать макрос который пробежит по файлу и если в ячейке столбца G встретиться слово в конце текста "удалить", то он удалить стоку с этой ячейкой. Строки со словом "удалить" в начале и в середине текста, макрос должен оставлять. В данном примере должны удалиться строки 3 и 7drinklab
А надо именно макросом? А то можно и так решить. Единичками помечены строки, которые надо удалить. Можно отсортировать и удалить, можно условным форматированием...
А надо именно макросом? А то можно и так решить. Единичками помечены строки, которые надо удалить. Можно отсортировать и удалить, можно условным форматированием...Wowick
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 x = Split(a(i, 1)) If x(UBound(x)) = "удалить" Then Rows(i + 1).Delete Next End Sub
[/vba]
[vba]
Код
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 x = Split(a(i, 1)) If x(UBound(x)) = "удалить" Then Rows(i + 1).Delete Next End Sub
на тестовом примере отработало корректно, но запустить макрос под рабочий файл не получилось:-\ заменил слово "удалить" на слово фильтр "2012 удалить",компилятор подсветил строку с условием, в чем дело не пойму
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 x = Split(a(i, 1)) If x(UBound(x)) = "2012 удалить" Then Rows(i + 1).Delete Next End Sub
на тестовом примере отработало корректно, но запустить макрос под рабочий файл не получилось:-\ заменил слово "удалить" на слово фильтр "2012 удалить",компилятор подсветил строку с условием, в чем дело не пойму
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 x = Split(a(i, 1)) If x(UBound(x)) = "2012 удалить" Then Rows(i + 1).Delete Next End Subdrinklab
можно было использовать число-буквенные фразы для выборки
Числобуквы тут ни при чем. UBound(x) дает вам последний кусок отсплитованного икса. Если иначе - последнее слово. А в "2012 удалить" уже два слова и пробел еще. Вот так попробуйте [vba]
Код
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 x = Split(a(i, 1)) If ("2012 " & x(UBound(x))) = "2012 удалить" Then Rows(i + 1).Delete Next End Sub
можно было использовать число-буквенные фразы для выборки
Числобуквы тут ни при чем. UBound(x) дает вам последний кусок отсплитованного икса. Если иначе - последнее слово. А в "2012 удалить" уже два слова и пробел еще. Вот так попробуйте [vba]
Код
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 x = Split(a(i, 1)) If ("2012 " & x(UBound(x))) = "2012 удалить" Then Rows(i + 1).Delete Next End Sub
[offtop]У еврея дохнут куры не по дням, а по часам. Расстроился еврей и решил ехать к рабби в синагогу. Приезжает и говорит: - Помоги, рабби, куры дохнут. - А ты повесь над курятником кружочек из бумаги, они и перестанут дохнуть. Проходит неделя, вторая, все равно дохнут. Опять приезжает еврей к рабби. - А ты повесь над курятником квадрат из бумаги, обязательно поможет. Проходит неделя, все куры померли. Еврей приходит к рабби и говорит: - Все куры сдохли, ничего не помогло. - Жаль, а у меня еще столько идей было.[/offtop]
Может сразу надо прикладывать реальный файл или пример фраз.
[offtop]У еврея дохнут куры не по дням, а по часам. Расстроился еврей и решил ехать к рабби в синагогу. Приезжает и говорит: - Помоги, рабби, куры дохнут. - А ты повесь над курятником кружочек из бумаги, они и перестанут дохнуть. Проходит неделя, вторая, все равно дохнут. Опять приезжает еврей к рабби. - А ты повесь над курятником квадрат из бумаги, обязательно поможет. Проходит неделя, все куры померли. Еврей приходит к рабби и говорит: - Все куры сдохли, ничего не помогло. - Жаль, а у меня еще столько идей было.[/offtop]
Может сразу надо прикладывать реальный файл или пример фраз.wild_pig
Сообщение отредактировал wild_pig - Пятница, 18.04.2014, 17:53
Спасибо за помощь , но не получилось переделать макрос( заменив строку с условием и удалив Split.Макрос пробегается по таблице и ни чего не происходит. Вот обновленный файл, я добавил в него фразу по которой мне нужно искать ячейки в таблице и удалять стоки с этими ячейками. Ячейка должна заканчиваться фразой "2013 Заявка отозвана заказчиком"
Пробовал написать макрос используя Запись макроса, но не пойму как удалять отсортированные строки( кароч беда)) поможите .чем сможите
Спасибо за помощь , но не получилось переделать макрос( заменив строку с условием и удалив Split.Макрос пробегается по таблице и ни чего не происходит. Вот обновленный файл, я добавил в него фразу по которой мне нужно искать ячейки в таблице и удалять стоки с этими ячейками. Ячейка должна заканчиваться фразой "2013 Заявка отозвана заказчиком"
Пробовал написать макрос используя Запись макроса, но не пойму как удалять отсортированные строки( кароч беда)) поможите .чем сможитеdrinklab
Все правильно. У Вас в столбце G еще пробелы после последней буквы есть. Посмотрите так: [vba]
Код
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 If Right(Trim(a(i, 1)), 31) = "2013 Заявка отозвана заказчиком" Then Rows(i + 1).Delete Next End Sub
[/vba]
Все правильно. У Вас в столбце G еще пробелы после последней буквы есть. Посмотрите так: [vba]
Код
Sub удалить() a = Range("G2:G" & Cells(Rows.Count, 7).End(xlUp).Row).Value For i = UBound(a) To 1 Step -1 If Right(Trim(a(i, 1)), 31) = "2013 Заявка отозвана заказчиком" Then Rows(i + 1).Delete Next End Sub