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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление строк заканчивающихся на ... - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строк заканчивающихся на ... (Макросы/Sub)
Удаление строк заканчивающихся на ...
drinklab Дата: Пятница, 18.04.2014, 14:11 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день,
подскажите пожалуйста, как написать макрос
который пробежит по файлу и если в ячейке столбца G встретиться слово в конце текста "удалить", то он удалить стоку с этой ячейкой.
Строки со словом "удалить" в начале и в середине текста, макрос должен оставлять.
В данном примере должны удалиться строки 3 и 7
К сообщению приложен файл: test.xls (26.0 Kb)
 
Ответить
СообщениеДобрый день,
подскажите пожалуйста, как написать макрос
который пробежит по файлу и если в ячейке столбца G встретиться слово в конце текста "удалить", то он удалить стоку с этой ячейкой.
Строки со словом "удалить" в начале и в середине текста, макрос должен оставлять.
В данном примере должны удалиться строки 3 и 7

Автор - drinklab
Дата добавления - 18.04.2014 в 14:11
Wowick Дата: Пятница, 18.04.2014, 14:40 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 5 ±
Замечаний: 0% ±

Excel 2010
А надо именно макросом? А то можно и так решить. Единичками помечены строки, которые надо удалить. Можно отсортировать и удалить, можно условным форматированием...
К сообщению приложен файл: 0649287.xls (32.5 Kb)
 
Ответить
СообщениеА надо именно макросом? А то можно и так решить. Единичками помечены строки, которые надо удалить. Можно отсортировать и удалить, можно условным форматированием...

Автор - Wowick
Дата добавления - 18.04.2014 в 14:40
drinklab Дата: Пятница, 18.04.2014, 15:11 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
можно, но мне нужна автоматизация процесса) т.к. файлов таких куча и настраивать фильтры в каждом утомляет
 
Ответить
Сообщениеможно, но мне нужна автоматизация процесса) т.к. файлов таких куча и настраивать фильтры в каждом утомляет

Автор - drinklab
Дата добавления - 18.04.2014 в 15:11
wild_pig Дата: Пятница, 18.04.2014, 15:38 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
[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
[/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
[/vba]

Автор - wild_pig
Дата добавления - 18.04.2014 в 15:38
drinklab Дата: Пятница, 18.04.2014, 16:25 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
на тестовом примере отработало корректно, но запустить макрос под рабочий файл не получилось:-\
заменил слово "удалить" на слово фильтр "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 Sub

Автор - drinklab
Дата добавления - 18.04.2014 в 16:25
RAN Дата: Пятница, 18.04.2014, 16:34 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
x(UBound(x)) в данном случае в принципе не может быть = "2012 удалить" , так что удалять однозначно не будет, но и ошибки нет


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Пятница, 18.04.2014, 16:35
 
Ответить
Сообщениеx(UBound(x)) в данном случае в принципе не может быть = "2012 удалить" , так что удалять однозначно не будет, но и ошибки нет

Автор - RAN
Дата добавления - 18.04.2014 в 16:34
drinklab Дата: Пятница, 18.04.2014, 16:47 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
как же переделать макро, чтоб можно было использовать число-буквенные фразы для выборки?
 
Ответить
Сообщениекак же переделать макро, чтоб можно было использовать число-буквенные фразы для выборки?

Автор - drinklab
Дата добавления - 18.04.2014 в 16:47
_Boroda_ Дата: Пятница, 18.04.2014, 17:51 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
можно было использовать число-буквенные фразы для выборки
Числобуквы тут ни при чем. 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
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
можно было использовать число-буквенные фразы для выборки
Числобуквы тут ни при чем. 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
[/vba]

Автор - _Boroda_
Дата добавления - 18.04.2014 в 17:51
wild_pig Дата: Пятница, 18.04.2014, 17:52 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013

Может сразу надо прикладывать реальный файл или пример фраз.


Сообщение отредактировал wild_pig - Пятница, 18.04.2014, 17:53
 
Ответить
Сообщение

Может сразу надо прикладывать реальный файл или пример фраз.

Автор - wild_pig
Дата добавления - 18.04.2014 в 17:52
ikki Дата: Суббота, 19.04.2014, 00:31 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
дался вам этот split :D
[vba]
Код
if a(i,1) like "*2012 удалить" then ...
[/vba]
[vba]
Код
if right(a(i,1),12) = "2012 удалить" then ...
[/vba]


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 19.04.2014, 00:34
 
Ответить
Сообщениедался вам этот split :D
[vba]
Код
if a(i,1) like "*2012 удалить" then ...
[/vba]
[vba]
Код
if right(a(i,1),12) = "2012 удалить" then ...
[/vba]

Автор - ikki
Дата добавления - 19.04.2014 в 00:31
wild_pig Дата: Суббота, 19.04.2014, 08:13 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
[offtop]Мы не ищем лёгких путей :)[/offtop]
 
Ответить
Сообщение[offtop]Мы не ищем лёгких путей :)[/offtop]

Автор - wild_pig
Дата добавления - 19.04.2014 в 08:13
drinklab Дата: Понедельник, 21.04.2014, 10:05 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо за помощь , но не получилось переделать макрос( заменив строку с условием и удалив Split.Макрос пробегается по таблице и ни чего не происходит.
Вот обновленный файл, я добавил в него фразу по которой мне нужно искать ячейки в таблице и удалять стоки с этими ячейками. Ячейка должна заканчиваться фразой "2013 Заявка отозвана заказчиком"

Пробовал написать макрос используя Запись макроса, но не пойму как удалять отсортированные строки( кароч беда)) поможите .чем сможите
К сообщению приложен файл: 123.xls (26.0 Kb)


Сообщение отредактировал drinklab - Понедельник, 21.04.2014, 10:06
 
Ответить
СообщениеСпасибо за помощь , но не получилось переделать макрос( заменив строку с условием и удалив Split.Макрос пробегается по таблице и ни чего не происходит.
Вот обновленный файл, я добавил в него фразу по которой мне нужно искать ячейки в таблице и удалять стоки с этими ячейками. Ячейка должна заканчиваться фразой "2013 Заявка отозвана заказчиком"

Пробовал написать макрос используя Запись макроса, но не пойму как удалять отсортированные строки( кароч беда)) поможите .чем сможите

Автор - drinklab
Дата добавления - 21.04.2014 в 10:05
_Boroda_ Дата: Понедельник, 21.04.2014, 10:23 | Сообщение № 13
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Все правильно. У Вас в столбце 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]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВсе правильно. У Вас в столбце 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]

Автор - _Boroda_
Дата добавления - 21.04.2014 в 10:23
drinklab Дата: Понедельник, 21.04.2014, 11:32 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо - это то что нужно hands
 
Ответить
СообщениеСпасибо - это то что нужно hands

Автор - drinklab
Дата добавления - 21.04.2014 в 11:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строк заканчивающихся на ... (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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