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

Вход

Регистрация

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

 

= Мир MS Excel/Макрос удаление не нужных строк - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Макрос удаление не нужных строк
Dersarius Дата: Четверг, 19.03.2015, 12:54 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 35
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Эх, нелегкая эта штука VBA когда мало знаешь =((((

Ребят проблема, подскажите пожалуйста с макросом.

Есть Лист1 с данными, нужен макрос который удалит не нужные строчки и пустые.
Пример, Лист1 нужно оставить только название улицы, прибор, сер.номер,система (остальное удалить из шапки, что бы не было пустых строчек между ними).
Возможно такое? что бы Макрос видел название что ему надо удалить (строчку)
К сообщению приложен файл: 123.xlsx (9.4 Kb)
 
Ответить
СообщениеЭх, нелегкая эта штука VBA когда мало знаешь =((((

Ребят проблема, подскажите пожалуйста с макросом.

Есть Лист1 с данными, нужен макрос который удалит не нужные строчки и пустые.
Пример, Лист1 нужно оставить только название улицы, прибор, сер.номер,система (остальное удалить из шапки, что бы не было пустых строчек между ними).
Возможно такое? что бы Макрос видел название что ему надо удалить (строчку)

Автор - Dersarius
Дата добавления - 19.03.2015 в 12:54
Roman777 Дата: Четверг, 19.03.2015, 14:21 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Dersarius, Добрый день! Сначало ищете последнюю заполненную строку, потом циклом проверяете пустая или нет строчка (если у вас определяется именно первым столбцом пустота строки, тогда будет так):
[vba]
Код
sub удаление_строк()
i_n = cells(rows.count,1).end(xlUp).row

For i=1 to i_n
    if cells(i,1)="" then
       rows(i).delete
    end if
next i

end sub
[/vba]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 19.03.2015, 14:21
 
Ответить
СообщениеDersarius, Добрый день! Сначало ищете последнюю заполненную строку, потом циклом проверяете пустая или нет строчка (если у вас определяется именно первым столбцом пустота строки, тогда будет так):
[vba]
Код
sub удаление_строк()
i_n = cells(rows.count,1).end(xlUp).row

For i=1 to i_n
    if cells(i,1)="" then
       rows(i).delete
    end if
next i

end sub
[/vba]

Автор - Roman777
Дата добавления - 19.03.2015 в 14:21
_Boroda_ Дата: Четверг, 19.03.2015, 14:34 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Roman777, а если несколько пустых подряд?
[vba]
Код
Sub tt()
     i_n = Cells(Rows.Count, 1).End(xlUp).Row
     For i = i_n To 1 Step -1
         If Cells(i, 1) = "" Then
             Rows(i).Delete
         End If
     Next i
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеRoman777, а если несколько пустых подряд?
[vba]
Код
Sub tt()
     i_n = Cells(Rows.Count, 1).End(xlUp).Row
     For i = i_n To 1 Step -1
         If Cells(i, 1) = "" Then
             Rows(i).Delete
         End If
     Next i
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 19.03.2015 в 14:34
Roman777 Дата: Четверг, 19.03.2015, 14:43 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
_Boroda_, Вы правы, тут не учитывал, что при удалении i-й строки i+1 строка становится i-й. А я обычно вводил переменную, которую вычитал на каждом шаге:
[vba]
Код
sub удаление_строк()
dim k as long
i_n = cells(rows.count,1).end(xlUp).row

For i=1 to i_n
if cells(i-k,1)="" then
rows(i-k).delete
k=k+1
end if
next i

end sub
[/vba]


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Четверг, 19.03.2015, 15:03
 
Ответить
Сообщение_Boroda_, Вы правы, тут не учитывал, что при удалении i-й строки i+1 строка становится i-й. А я обычно вводил переменную, которую вычитал на каждом шаге:
[vba]
Код
sub удаление_строк()
dim k as long
i_n = cells(rows.count,1).end(xlUp).row

For i=1 to i_n
if cells(i-k,1)="" then
rows(i-k).delete
k=k+1
end if
next i

end sub
[/vba]

Автор - Roman777
Дата добавления - 19.03.2015 в 14:43
KuklP Дата: Четверг, 19.03.2015, 16:17 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Проще:
[vba]
Код
Sub www()
     On Error Resume Next
     Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)). _
             SpecialCells(4).EntireRow.Delete
End Sub
[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПроще:
[vba]
Код
Sub www()
     On Error Resume Next
     Range(Cells(1, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)). _
             SpecialCells(4).EntireRow.Delete
End Sub
[/vba]

Автор - KuklP
Дата добавления - 19.03.2015 в 16:17
_Boroda_ Дата: Четверг, 19.03.2015, 16:23 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16957
Репутация: 6631 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS

Да уж сколько раз здесь писали, что проще, но косячнее. На средних объемах еще нормально, а на больших не всегда. Я не утверждаю, что вообще не работает, я утверждаю, что иногда работает неверно.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
Да уж сколько раз здесь писали, что проще, но косячнее. На средних объемах еще нормально, а на больших не всегда. Я не утверждаю, что вообще не работает, я утверждаю, что иногда работает неверно.

Автор - _Boroda_
Дата добавления - 19.03.2015 в 16:23
KuklP Дата: Четверг, 19.03.2015, 16:28 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Привет, Саш. Да не косячнее. Просто надо учитывать потолок areas range. ~8100+. Но тут-то речь всего лишь о шапке. :)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеПривет, Саш. Да не косячнее. Просто надо учитывать потолок areas range. ~8100+. Но тут-то речь всего лишь о шапке. :)

Автор - KuklP
Дата добавления - 19.03.2015 в 16:28
  • Страница 1 из 1
  • 1
Поиск:

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