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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2011, 16:38   #1
alexsampler
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 86
По умолчанию Функция удаления строк в макросе

Добрый день!
Excel 2003
С макросами пока очень «на вы», но нужна помощь…
Есть примитивный макрос для обработки фала txt с помощью мастера текста, нужно добавить такой код, что бы удалялись строки в ячейках которых присутствует слово «рез»
так это выглядит в файле (информация в 12 столбцах)
1 500.00 1 MD нерез
2 000.00 1 KZ нерез
1 500.00 1 CA рез
1 500.00 1 LV рез


Вот часть существующего кода:

Range("H22").Select
Columns("K:K").ColumnWidth = 6
Columns("A:A").ColumnWidth = 3.14
Rows("1:9").Select
Range("A9").Activate
Selection.Delete Shift:=xlUp
Range("A1:L2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Replace What:="-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

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

СПАСИБО!
alexsampler вне форума Ответить с цитированием
Старый 11.11.2011, 18:38   #2
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
так это выглядит в файле (информация в 12 столбцах)
Цитата:
надеюсь пример файла не нужен ....
зря надеетесь
это что, мне сейчас заполнять 12 столбцов и думать как там у Вас данные расположены?
а насчет
Цитата:
строки в ячейках которых присутствует слово «рез»
похожее было вчера, только там вставка строки, а у вас удаление
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 11.11.2011, 21:00   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Удаление (скрытие) строк по условию
http://excelvba.ru/code/ConditionalRowsDeleting
EducatedFool вне форума Ответить с цитированием
Старый 14.11.2011, 16:31   #4
alexsampler
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 86
По умолчанию Функция удаления строк в макросе

Добрый день!
Спасибо за советы, EducatedFool, макрос http://excelvba.ru/code/ConditionalRowsDeleting, действительно подходящий, но вот в чем беда:
В обрабатываемом документе есть два крупных критерия «рез» и нерез», так вот макрос удаляет вообще все существующие строки, воспринимая слово «нерез» тоже как искомое.
А мне как раз нужно «нерез» оставить.

Я уже подумал – может быть лучше использовать команду удалять все строки, кроме тех, в которых содержится слово «нерез»?
Помогите пожалуйста!!!
p.s.
добавляю на всякий случай пример с частью обрабатываемого документа
Вложения
Тип файла: rar Пример РезНерез.rar (2.3 Кб, 11 просмотров)
alexsampler вне форума Ответить с цитированием
Старый 14.11.2011, 17:22   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Какая проблема?
В этом примере можно так:
Код:
Sub tt()
Dim i&
For i = 9 To 1 Step -1
If Cells(i, 12) = "рез" Then Rows(i).Delete
Next
End Sub
Только ещё на практике нужно отключить обновление экрана и пересчёт формул (если они есть), чтоб не рябило и не тормозило.
Или код чуть посложнее можно написать -с ColumnDifferences: http://www.programmersforum.ru/showthread.php?t=145071
Но можно ведь сразу Ваш текст перебрать - из одного файла сделать другой, с тем же названием, но без лишних строк.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 14.11.2011 в 17:26.
Hugo121 вне форума Ответить с цитированием
Старый 15.11.2011, 16:26   #6
alexsampler
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 86
По умолчанию

Добрый день!
HUGO 121, Спасибо большое!
Ваш код пока не проверял, но нашел пока простой но не красивый выход, как раз для таких нерадивых пользователей как я )))
Я начал запись нового макроса с произвольным названием, в сформированном файле задал автофильтр, выбрал все строки по столбцу со значениями «рез», удалил все отсортированные строки. Зашел в созданный макрос, скопировал код и вставил в свой рабочий, и в общем все заработало.

Понимаю, что способ примитивный и наверно не грамотный, но может быть будет полезен всем, кто еще не разбирается в VBA. В конце концов, дает же excel такой вариант решения…

Имеет ли такой вариант решения проблемы, право на существование ???
Спасибо!!!
alexsampler вне форума Ответить с цитированием
Старый 15.11.2011, 16:34   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Это один из самых эффективных способов. Вот еще один:
Код:
Sub DelRows()
    Dim x As Range: Set x = [l:l].Find(What:="нерез", LookAt:=xlWhole)
    If Not x Is Nothing Then [l:l].ColumnDifferences(x).EntireRow.Delete
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 15.11.2011 в 16:39.
kuklp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрет удаления строк Trimbl Microsoft Office Excel 2 14.12.2010 01:47
Функция в Access для удаления последних символов kity Помощь студентам 3 18.11.2010 08:55
удаления строк с повторяющимися элементами satten Microsoft Office Excel 2 18.09.2010 17:20
TSysCharSet и функция удаления специфических символов из строки. DrAndriy Общие вопросы Delphi 0 07.09.2010 14:06
[C++] Программа-справочник, Функция удаления записи из файла umnik90 Общие вопросы C/C++ 1 11.06.2009 16:07