Страницы: 1
RSS
Макрос удаления строк
 
Добрый день. Помогите написать макрос, который будет удалять строки начиная с первой, до той, в которой в столбце А имеется фраза "Строительные материалы, изделия и конструкции" - в данном случае это строка 44, но обрабатывать надо будет много файлов, где эта строка может быть любой.  
Спасибо.
 
Не пробовали сначала поискать? Окошко над темой, "удаление строк по условию".
 
Пользовал поиск: там в основном примеры удаления пустых/непустых строк. Если бы я в макросах небыл слаб, то может и подфигачил что-нить под себя, а так приходится просить о помощи.
 
Вы только до двух умеете считать?  
 
Ссылка 3: "Надо оставить строки только с одной звездочкой."  
Ссылка 4: "может ли эксел удалить строки, не содержащие ключевое слово..."  
Ссылка 5: "Существует реестр по а\м. Эти строки в листе необходимо удалить"  
Ссылка 6; "Необходимо макросом удалить строку, при условии что в столбце пустая ячейка."  
Ссылка 7: "Необходимо удалить данные строк, при условии что в этом столбце данные больше нуля"  
И т.д.
 
Эти темы я видел, до того, как написал предпоследнее сообщение. Если бы не срочность вопроса, то разбирался бы сам не открывая эту тему. А так, пока шерстю похожие вопросы в поиске решения, может кто-то подскажет быстрее, нежели я сам во всем разберусь.
 
Sub tt()  
Dim x As Range  
Set x = Columns(1).Find("Строительные материалы, изделия и конструкции", , xlValues, xlWhole)  
If Not x Is Nothing Then Range([a1], x).EntireRow.Delete
End Sub
 
"До той" -    
 
Sub tt()  
Dim x As Range  
Set x = Columns(1).Find("Строительные материалы, изделия и конструкции", , xlValues, xlWhole)  
If Not x Is Nothing Then Range([a1], x.Offset(-1)).EntireRow.Delete
End Sub
 
Спасибо.
 
10  
ud=inputbox("Введите название строки - барьера после которой строки не удаляются. Вводить название точно.")  
if ud="" then  
msgbox("Вы не ввели название строки, повторите ввод")  
goto 10  
end if  
st=range("A15").currentregion.rows.count  
for x=1 to st  
range("A15").select  
selection.offset(x,0).select  
d=activecell.value  
if ud=d then  
selection.entierrows.delete  
exit for  
elseif ud <> d  
end if  
next x
 
{quote}{login=}{date=01.09.2011 11:47}{thema=}{post}10  
ud=inputbox("Введите название строки - барьера после которой строки не удаляются. Вводить название точно.")  
if ud="" then  
msgbox("Вы не ввели название строки, повторите ввод")  
goto 10  
end if  
st=range("A15").currentregion.rows.count  
for x=1 to st  
range("A15").select  
selection.offset(x,0).select  
d=activecell.value  
if ud<>d then  
selection.entierrows.delete  
exit for  
elseif ud = d  
end if  
next x{/post}{/quote}
 
Благодарствую.
 
Такая же проблема, только удалять надо на всех листах в файле, а не на одном, можете помочь?
 
Sub УдалениеСтрок()  
   Dim myWorksheet As Worksheet  
   For Each myWorksheet In Worksheets  
   Dim x As Range  
Set x = Columns(1).Find("РУБЛЬ", , xlValues, xlWhole)  
If Not x Is Nothing Then Range([a1], x.Offset(-1)).EntireRow.Delete
Next  
End Sub  
 
Вот, что получилось. Если без нескольких листов, то все работает, а с несколькими никак. Подскажите, пожалуйста, решение
 
Правильно будет так:  
 
Sub УдалениеСтрок()  
Dim myWorksheet As Worksheet, x As Range  
For Each myWorksheet In Worksheets  
Set x = myWorksheet.Columns(1).Find("РУБЛЬ", , xlValues, xlWhole)  
If Not x Is Nothing Then myWorksheet.Range(myWorksheet.[a1], x.Offset(-1)).EntireRow.Delete
Next  
End Sub  
 
 
И ещё здесь посмотрите:  
http://excelvba.ru/code/ConditionalRowsDeleting
 
Большое спасибо, вы мне очень помогли!
Страницы: 1
Читают тему
Наверх
Loading...