Удалить строки по условию
pabchek
Дата: Вторник, 19.01.2016, 14:04 |
Сообщение № 21
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Ответить
Сообщение Это из 2-го сообщения? Автор - pabchek Дата добавления - 19.01.2016 в 14:04
Hugo
Дата: Вторник, 19.01.2016, 14:05 |
Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация:
707
±
Замечаний:
0% ±
2019
Да.
excel@nxt.ru webmoney: E265281470651 Z422237915069
Ответить
Сообщение Да. Автор - Hugo Дата добавления - 19.01.2016 в 14:05
pabchek
Дата: Вторник, 19.01.2016, 14:06 |
Сообщение № 23
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
Наладил. Время работы 1 секунда!!!!!!!!!!!!! Рано обрадовался. Не наладил. Как налаживать если это и было темой - не умею я...
Наладил. Время работы 1 секунда!!!!!!!!!!!!! Рано обрадовался. Не наладил. Как налаживать если это и было темой - не умею я...pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Сообщение отредактировал pabchek - Вторник, 19.01.2016, 14:10
Ответить
Сообщение Наладил. Время работы 1 секунда!!!!!!!!!!!!! Рано обрадовался. Не наладил. Как налаживать если это и было темой - не умею я...Автор - pabchek Дата добавления - 19.01.2016 в 14:06
Hugo
Дата: Вторник, 19.01.2016, 14:08 |
Сообщение № 24
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация:
707
±
Замечаний:
0% ±
2019
Ну вот! Конечно если из этой кучи нужно удалять половину - тогда что поиск, что перебор... А если пару строк - то однозначно поиск рулит.
Ну вот! Конечно если из этой кучи нужно удалять половину - тогда что поиск, что перебор... А если пару строк - то однозначно поиск рулит. Hugo
excel@nxt.ru webmoney: E265281470651 Z422237915069
Ответить
Сообщение Ну вот! Конечно если из этой кучи нужно удалять половину - тогда что поиск, что перебор... А если пару строк - то однозначно поиск рулит. Автор - Hugo Дата добавления - 19.01.2016 в 14:08
SLAVICK
Дата: Вторник, 19.01.2016, 14:41 |
Сообщение № 25
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
Тут вопрос удаления большого количества строк - давно решили (См 11-й пост.)
Тут вопрос удаления большого количества строк - давно решили (См 11-й пост.) SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение Тут вопрос удаления большого количества строк - давно решили (См 11-й пост.) Автор - SLAVICK Дата добавления - 19.01.2016 в 14:41
pabchek
Дата: Вторник, 19.01.2016, 14:57 |
Сообщение № 26
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация:
218
±
Замечаний:
0% ±
Excel 2007
Воооо... похоже. Щас буду делать под себя. Спасибо!
Воооо... похоже. Щас буду делать под себя. Спасибо! pabchek
"Учиться, учиться и еще раз учиться!" WM: R399923528092
Ответить
Сообщение Воооо... похоже. Щас буду делать под себя. Спасибо! Автор - pabchek Дата добавления - 19.01.2016 в 14:57
Wasilich
Дата: Вторник, 19.01.2016, 15:09 |
Сообщение № 27
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
А вот у меня вопрос, можно ли для решения этой задачи, по ускорению процесса удаления строк, отфильтровать даты только по месяцу и по году, без учета дней? Если да, то удалить видимые строки можно кодом [vba]Код
SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
[/vba]и наверное так будет быстрее. ИМХО.
А вот у меня вопрос, можно ли для решения этой задачи, по ускорению процесса удаления строк, отфильтровать даты только по месяцу и по году, без учета дней? Если да, то удалить видимые строки можно кодом [vba]Код
SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
[/vba]и наверное так будет быстрее. ИМХО. Wasilich
Сообщение отредактировал Wasilic - Вторник, 19.01.2016, 15:10
Ответить
Сообщение А вот у меня вопрос, можно ли для решения этой задачи, по ускорению процесса удаления строк, отфильтровать даты только по месяцу и по году, без учета дней? Если да, то удалить видимые строки можно кодом [vba]Код
SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
[/vba]и наверное так будет быстрее. ИМХО. Автор - Wasilich Дата добавления - 19.01.2016 в 15:09
SLAVICK
Дата: Вторник, 19.01.2016, 15:16 |
Сообщение № 28
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
и наверное так будет быстрее. ИМХО.
Wasilic быстрее чем что? Если чем сортировка - то на больших объемах: при таком подходе споткнетесь с лимитом xlCellTypeVisible Во вторых не будет быстрее чем сортировка - я проходил эти моменты.
и наверное так будет быстрее. ИМХО.
Wasilic быстрее чем что? Если чем сортировка - то на больших объемах: при таком подходе споткнетесь с лимитом xlCellTypeVisible Во вторых не будет быстрее чем сортировка - я проходил эти моменты. SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение и наверное так будет быстрее. ИМХО.
Wasilic быстрее чем что? Если чем сортировка - то на больших объемах: при таком подходе споткнетесь с лимитом xlCellTypeVisible Во вторых не будет быстрее чем сортировка - я проходил эти моменты. Автор - SLAVICK Дата добавления - 19.01.2016 в 15:16
_Boroda_
Дата: Вторник, 19.01.2016, 16:32 |
Сообщение № 29
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация:
6478
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Василич, давай представим, что нам нужно удалить строки с номерами 3 и 5, а всего у нас их 6 вместе с шапкой. Вот мы отфильтровали по критерию, получили видимыми шапку и строки 3 и 5. Выделили только их и сказали "удалить строки". Что имеем? Excel работает сверху вниз, правильно? Тогда он сначала удалит строку 3, затем сместится вверх на одну строку все, что было ниже удаленной строки, затем удалится строка 4 (бывшая строка 5), затем сместится все то, что было ниже. Для нескольких строк - фигня, а вот для многих строк, не расположенных рядом, это очень замедляет. А особенно в том случае, когда есть раскрашенные границы ячеек и прочее форматирование.
Василич, давай представим, что нам нужно удалить строки с номерами 3 и 5, а всего у нас их 6 вместе с шапкой. Вот мы отфильтровали по критерию, получили видимыми шапку и строки 3 и 5. Выделили только их и сказали "удалить строки". Что имеем? Excel работает сверху вниз, правильно? Тогда он сначала удалит строку 3, затем сместится вверх на одну строку все, что было ниже удаленной строки, затем удалится строка 4 (бывшая строка 5), затем сместится все то, что было ниже. Для нескольких строк - фигня, а вот для многих строк, не расположенных рядом, это очень замедляет. А особенно в том случае, когда есть раскрашенные границы ячеек и прочее форматирование. _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Василич, давай представим, что нам нужно удалить строки с номерами 3 и 5, а всего у нас их 6 вместе с шапкой. Вот мы отфильтровали по критерию, получили видимыми шапку и строки 3 и 5. Выделили только их и сказали "удалить строки". Что имеем? Excel работает сверху вниз, правильно? Тогда он сначала удалит строку 3, затем сместится вверх на одну строку все, что было ниже удаленной строки, затем удалится строка 4 (бывшая строка 5), затем сместится все то, что было ниже. Для нескольких строк - фигня, а вот для многих строк, не расположенных рядом, это очень замедляет. А особенно в том случае, когда есть раскрашенные границы ячеек и прочее форматирование. Автор - _Boroda_ Дата добавления - 19.01.2016 в 16:32
Wasilich
Дата: Вторник, 19.01.2016, 17:39 |
Сообщение № 30
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
давай представим, что нам нужно удалить строки... . Вот мы отфильтровали по критерию
Саша, а давай лучше проверим!
давай представим, что нам нужно удалить строки... . Вот мы отфильтровали по критерию
Саша, а давай лучше проверим! Wasilich
Ответить
Сообщение давай представим, что нам нужно удалить строки... . Вот мы отфильтровали по критерию
Саша, а давай лучше проверим! Автор - Wasilich Дата добавления - 19.01.2016 в 17:39
_Boroda_
Дата: Вторник, 19.01.2016, 17:59 |
Сообщение № 31
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация:
6478
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Чет я наверное не понимаю. И что?
Чет я наверное не понимаю. И что? _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Чет я наверное не понимаю. И что? Автор - _Boroda_ Дата добавления - 19.01.2016 в 17:59
Wasilich
Дата: Вторник, 19.01.2016, 18:15 |
Сообщение № 32
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
Ну как "И что?". Фильтр выбрал строки с данными по условию. Они остались видимые, а макрос их (видимые) удалил одним махом и все.Для нескольких строк - фигня, а вот для многих строк, не расположенных рядом, это очень замедляет
Ты имеешь ввиду, этот код замедляет? [vba]Код
ActiveSheet.Range("D2:D" & S).SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
[/vba]может быть. Не знаю, у меня нету 400000 строк. Он что, тоже работает циклом?
Ну как "И что?". Фильтр выбрал строки с данными по условию. Они остались видимые, а макрос их (видимые) удалил одним махом и все.Для нескольких строк - фигня, а вот для многих строк, не расположенных рядом, это очень замедляет
Ты имеешь ввиду, этот код замедляет? [vba]Код
ActiveSheet.Range("D2:D" & S).SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
[/vba]может быть. Не знаю, у меня нету 400000 строк. Он что, тоже работает циклом? Wasilich
Сообщение отредактировал Wasilic - Вторник, 19.01.2016, 18:36
Ответить
Сообщение Ну как "И что?". Фильтр выбрал строки с данными по условию. Они остались видимые, а макрос их (видимые) удалил одним махом и все.Для нескольких строк - фигня, а вот для многих строк, не расположенных рядом, это очень замедляет
Ты имеешь ввиду, этот код замедляет? [vba]Код
ActiveSheet.Range("D2:D" & S).SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
[/vba]может быть. Не знаю, у меня нету 400000 строк. Он что, тоже работает циклом? Автор - Wasilich Дата добавления - 19.01.2016 в 18:15
SLAVICK
Дата: Вторник, 19.01.2016, 18:35 |
Сообщение № 33
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
Wasilic , Вы читали по моей ссылке? По факту не нужно 400000, чтобы xlCellTypeVisible - выдал ошибку:Цитата
The only problem is that there is a limit of 8192 areas that it can handle
Да будет удалятся на порядок дольше при больших объемах.
Wasilic , Вы читали по моей ссылке? По факту не нужно 400000, чтобы xlCellTypeVisible - выдал ошибку:Цитата
The only problem is that there is a limit of 8192 areas that it can handle
Да будет удалятся на порядок дольше при больших объемах. SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение Wasilic , Вы читали по моей ссылке? По факту не нужно 400000, чтобы xlCellTypeVisible - выдал ошибку:Цитата
The only problem is that there is a limit of 8192 areas that it can handle
Да будет удалятся на порядок дольше при больших объемах. Автор - SLAVICK Дата добавления - 19.01.2016 в 18:35
Wasilich
Дата: Вторник, 19.01.2016, 18:44 |
Сообщение № 34
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
Уговорили! Жаль проверить не могу самостоятельно на 400000! Хотя видимых останется всего то..., если будет выбран один месяц и один год. Тем более, что какой то месяц в списке не будет разбросан с первой до последней строки. Это надо узнать у pabchek а.
Уговорили! Жаль проверить не могу самостоятельно на 400000! Хотя видимых останется всего то..., если будет выбран один месяц и один год. Тем более, что какой то месяц в списке не будет разбросан с первой до последней строки. Это надо узнать у pabchek а. Wasilich
Сообщение отредактировал Wasilic - Вторник, 19.01.2016, 18:48
Ответить
Сообщение Уговорили! Жаль проверить не могу самостоятельно на 400000! Хотя видимых останется всего то..., если будет выбран один месяц и один год. Тем более, что какой то месяц в списке не будет разбросан с первой до последней строки. Это надо узнать у pabchek а. Автор - Wasilich Дата добавления - 19.01.2016 в 18:44
SLAVICK
Дата: Вторник, 19.01.2016, 19:00 |
Сообщение № 35
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
Жаль проверить не могу самостоятельно на 400000
Ну чего же не можете - вот пример на 200 000 Откройте - нажмите "Создать примеров" - потом запустите мой код. Потом - - нажмите "Создать примеров" - потом запустите Ваш код. перевложил файл
Жаль проверить не могу самостоятельно на 400000
Ну чего же не можете - вот пример на 200 000 Откройте - нажмите "Создать примеров" - потом запустите мой код. Потом - - нажмите "Создать примеров" - потом запустите Ваш код. перевложил файлSLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение Жаль проверить не могу самостоятельно на 400000
Ну чего же не можете - вот пример на 200 000 Откройте - нажмите "Создать примеров" - потом запустите мой код. Потом - - нажмите "Создать примеров" - потом запустите Ваш код. перевложил файлАвтор - SLAVICK Дата добавления - 19.01.2016 в 19:00
RAN
Дата: Вторник, 19.01.2016, 19:26 |
Сообщение № 36
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
2003 не треснет?
2003 не треснет? RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение 2003 не треснет? Автор - RAN Дата добавления - 19.01.2016 в 19:26
Wasilich
Дата: Вторник, 19.01.2016, 19:29 |
Сообщение № 37
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация:
326
±
Замечаний:
0% ±
2003
Ответить
Сообщение Автор - Wasilich Дата добавления - 19.01.2016 в 19:29
_Boroda_
Дата: Вторник, 19.01.2016, 19:35 |
Сообщение № 38
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация:
6478
±
Замечаний:
0% ±
2003; 2007; 2010; 2013 RUS
Ну как "И что?". Фильтр выбрал строки с данными по условию. Они остались видимые, а макрос их (видимые) удалил одним махом и все.
Да это-то понятно. Только вот не все одним махом он удалил, а по очереди. Предположу, что по Arial. То есть если нужно удалить строки 3-6 и 8-9, то удаляет сначала 3-6, перемещает все, затем удаляет те, которые раньше были 8-9. Возможно, метку какую-то ставит. Иначе не было бы разницы в скорости удаления 30000 строк подряд и 30000 строк через одну.
Ну как "И что?". Фильтр выбрал строки с данными по условию. Они остались видимые, а макрос их (видимые) удалил одним махом и все.
Да это-то понятно. Только вот не все одним махом он удалил, а по очереди. Предположу, что по Arial. То есть если нужно удалить строки 3-6 и 8-9, то удаляет сначала 3-6, перемещает все, затем удаляет те, которые раньше были 8-9. Возможно, метку какую-то ставит. Иначе не было бы разницы в скорости удаления 30000 строк подряд и 30000 строк через одну._Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Ну как "И что?". Фильтр выбрал строки с данными по условию. Они остались видимые, а макрос их (видимые) удалил одним махом и все.
Да это-то понятно. Только вот не все одним махом он удалил, а по очереди. Предположу, что по Arial. То есть если нужно удалить строки 3-6 и 8-9, то удаляет сначала 3-6, перемещает все, затем удаляет те, которые раньше были 8-9. Возможно, метку какую-то ставит. Иначе не было бы разницы в скорости удаления 30000 строк подряд и 30000 строк через одну.Автор - _Boroda_ Дата добавления - 19.01.2016 в 19:35
Udik
Дата: Вторник, 19.01.2016, 19:40 |
Сообщение № 39
Группа: Друзья
Ранг: Старожил
Сообщений: 1588
Репутация:
192
±
Замечаний:
0% ±
Excel 2016 х 64
сначала 3-6, перемещает все,...Возможно, метку какую-то ставит
А может он снизу удаляет?
сначала 3-6, перемещает все,...Возможно, метку какую-то ставит
А может он снизу удаляет?Udik
вот вам барабан яд 41001231307558 wm R419131876897 udik1968@gmail.com
Сообщение отредактировал Udik - Вторник, 19.01.2016, 19:48
Ответить
Сообщение сначала 3-6, перемещает все,...Возможно, метку какую-то ставит
А может он снизу удаляет?Автор - Udik Дата добавления - 19.01.2016 в 19:40
SLAVICK
Дата: Вторник, 19.01.2016, 21:10 |
Сообщение № 40
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация:
766
±
Замечаний:
0% ±
2019
НН-да как-то не посмотрел. Ну тогда для 2003 : [vba]Код
Sub SLAVICK() t = Timer With ActiveSheet .AutoFilter.Sort.SortFields.Add Key:=Range( _ "D2:" & s), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With .AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With from_ = Columns("D:D").Find(What:="1", After:=[d1], LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Row to_ = Columns("D:D").Find(What:="2", After:=[d1], LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Row - 1 .Rows(from_ & ":" & to_).Delete xlUp End With [j1] = Timer - t End Sub
[/vba]
НН-да как-то не посмотрел. Ну тогда для 2003 : [vba]Код
Sub SLAVICK() t = Timer With ActiveSheet .AutoFilter.Sort.SortFields.Add Key:=Range( _ "D2:" & s), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With .AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With from_ = Columns("D:D").Find(What:="1", After:=[d1], LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Row to_ = Columns("D:D").Find(What:="2", After:=[d1], LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Row - 1 .Rows(from_ & ":" & to_).Delete xlUp End With [j1] = Timer - t End Sub
[/vba]SLAVICK
Иногда все проще чем кажется с первого взгляда.
Ответить
Сообщение НН-да как-то не посмотрел. Ну тогда для 2003 : [vba]Код
Sub SLAVICK() t = Timer With ActiveSheet .AutoFilter.Sort.SortFields.Add Key:=Range( _ "D2:" & s), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With .AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With from_ = Columns("D:D").Find(What:="1", After:=[d1], LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Row to_ = Columns("D:D").Find(What:="2", After:=[d1], LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False).Row - 1 .Rows(from_ & ":" & to_).Delete xlUp End With [j1] = Timer - t End Sub
[/vba]Автор - SLAVICK Дата добавления - 19.01.2016 в 21:10