Привет всем! Ребят, есть макрос который перебирает каждую строку по значению в определенном столбце и удаляет строку если нет значение в этом столбце. Это не очень удобно когда у тебя уже 20 000 строк - долго очень. Я часто пользуюсь фильтрами, поэтому можно ли написать макрос, который определил бы скажем в столбце L самое нижнее значение , а все что ниже строки тупо удалил?
Привет всем! Ребят, есть макрос который перебирает каждую строку по значению в определенном столбце и удаляет строку если нет значение в этом столбце. Это не очень удобно когда у тебя уже 20 000 строк - долго очень. Я часто пользуюсь фильтрами, поэтому можно ли написать макрос, который определил бы скажем в столбце L самое нижнее значение , а все что ниже строки тупо удалил?enchanter54
А для скорости работы макроса, который у Вас (я не видел, просто предполагаю) реализацию надо через массив делать и + отключать обновление экрана и пересчет формул.
akobir
А для скорости работы макроса, который у Вас (я не видел, просто предполагаю) реализацию надо через массив делать и + отключать обновление экрана и пересчет формул.
devilkurs, спасибо бро, просто я офисный чайник))) который не очень волочет в макросах. Если можно напишите макрос полностью, плизз)) [moder]А более подробных ответов без файла Вы и не дождетесь[/moder]
devilkurs, спасибо бро, просто я офисный чайник))) который не очень волочет в макросах. Если можно напишите макрос полностью, плизз)) [moder]А более подробных ответов без файла Вы и не дождетесь[/moder]enchanter54
Сообщение отредактировал Manyasha - Четверг, 17.03.2016, 14:02
devilkurs, Не, именно чтоб нашел последнее значение и тупо удалил все строки что ниже, до 65000 вполне подходит, столько точно не наберется.
devilkurs, Не, именно чтоб нашел последнее значение и тупо удалил все строки что ниже, до 65000 вполне подходит, столько точно не наберется.enchanter54
Я тоже офисный. Бухгалтер. Но я понял что оооочень помогает знание VBA в среде Word и Excel - изучаю, читаю.... За последние полтора года написал кучу макросов, теперь за полдня свои обязанности выполняю- остальное балду пинаю.
Так макрос готов, только не определен: [vba]
Код
Sub УдалениеСтрок () Rows(Cells(Rows.Count, 12).End(xlUp).Row + 1 & ":65000").Delete Shift:=xlUp end sub
[/vba] Осталось нарисовать кнопку и привязать макрос
[offtop] согласен с Manyasha
Я тоже офисный. Бухгалтер. Но я понял что оооочень помогает знание VBA в среде Word и Excel - изучаю, читаю.... За последние полтора года написал кучу макросов, теперь за полдня свои обязанности выполняю- остальное балду пинаю.
Так макрос готов, только не определен: [vba]
Код
Sub УдалениеСтрок () Rows(Cells(Rows.Count, 12).End(xlUp).Row + 1 & ":65000").Delete Shift:=xlUp end sub
[/vba] Осталось нарисовать кнопку и привязать макрос
devilkurs, я считаю всё нормально, нуб я и все бывают нубами до поры до времени. Даже не знал, что можно + поставить, как-то не обратил внимание, теперь знаю))) [moder]Отсюда я делаю вывод, что Правила форума Вы так и не прочитали.
devilkurs, я считаю всё нормально, нуб я и все бывают нубами до поры до времени. Даже не знал, что можно + поставить, как-то не обратил внимание, теперь знаю))) [moder]Отсюда я делаю вывод, что Правила форума Вы так и не прочитали.enchanter54
Сообщение отредактировал _Boroda_ - Четверг, 17.03.2016, 14:33
Хорош флудить, ближе к делу. Вот нашел в заначке. Сам не проверял. [vba]
Код
Sub ttt() On Error Resume Next ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete End Sub
[/vba]SpecialCells(4) или SpecialCells(xlCellTypeBlanks) - это все пустые ячейки в диапазоне ActiveSheet - на активном листе UsedRange - в используемом диапазоне (т.е. не весь лист, а только использ. диапазон) Columns(8) - в столбце 8 SpecialCells(4) - выбираем пустые ячейки EntireRow.Delete - для выбранных ячеек удаляем строку целиком
Хорош флудить, ближе к делу. Вот нашел в заначке. Сам не проверял. [vba]
Код
Sub ttt() On Error Resume Next ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete End Sub
[/vba]SpecialCells(4) или SpecialCells(xlCellTypeBlanks) - это все пустые ячейки в диапазоне ActiveSheet - на активном листе UsedRange - в используемом диапазоне (т.е. не весь лист, а только использ. диапазон) Columns(8) - в столбце 8 SpecialCells(4) - выбираем пустые ячейки EntireRow.Delete - для выбранных ячеек удаляем строку целикомWasilich
Василич, не учи людей плохому - у ТС 20000 строк, а SpecialCells(xlCellTypeBlanks) работает чуть больше, чем с 8 тыс. ареалов. Вполне можно налететь. Кстати, я таким образом, помнится, лет 6 назад очень здорово доходность посчитал, а заметил уже после того, как начальству отдал. Хорошо, что больше не заметил никто.
Василич, не учи людей плохому - у ТС 20000 строк, а SpecialCells(xlCellTypeBlanks) работает чуть больше, чем с 8 тыс. ареалов. Вполне можно налететь. Кстати, я таким образом, помнится, лет 6 назад очень здорово доходность посчитал, а заметил уже после того, как начальству отдал. Хорошо, что больше не заметил никто._Boroda_
И пусть тоже положит в заначку. Вдруг пригодится для 20-ти строк. [p.s.]Специально набрал 20 000 строк с каждой 5-й пустой и протестировал - 27 сек. на моем старичке. Это много, если эту операцию производить каждую минуту. [/p.s.]
И пусть тоже положит в заначку. Вдруг пригодится для 20-ти строк. [p.s.]Специально набрал 20 000 строк с каждой 5-й пустой и протестировал - 27 сек. на моем старичке. Это много, если эту операцию производить каждую минуту. [/p.s.]Wasilich
Сообщение отредактировал Wasilich - Четверг, 17.03.2016, 15:33