Всем здраствуйте. Есть файл в екселе на 40000 строк. есть колонка в которой иногда пусто, 15 и 16. Очень хочу макрос, который мог бы удалять всю строку целиком, соединяя при этом оставшиеся строки (ну чтобы не было пустой строки между ними) если в колонке 15 отсутствует значение, и не удалял если в столбце 16 значение присутствует. Сложноая это вещь? Два дня ищу по форумам - нигде не могу найти, ничего подобного.
Всем здраствуйте. Есть файл в екселе на 40000 строк. есть колонка в которой иногда пусто, 15 и 16. Очень хочу макрос, который мог бы удалять всю строку целиком, соединяя при этом оставшиеся строки (ну чтобы не было пустой строки между ними) если в колонке 15 отсутствует значение, и не удалял если в столбце 16 значение присутствует. Сложноая это вещь? Два дня ищу по форумам - нигде не могу найти, ничего подобного.wwizard
Sub tt() r_ = Range("A1").SpecialCells(xlLastCell).Row With Range("A1").SpecialCells(xlLastCell).Offset(2 - r_, 1).Resize(r_ - 1) .FormulaR1C1 = "=RC15&RC16" '15 и 16 - номера столбцов .Value = .Value .Replace What:="", Replacement:="=1" .SpecialCells(xlCellTypeFormulas).EntireRow.Delete .Clear End With End Sub
[/vba]
У меня тут без цикла родилось [vba]
Код
Sub tt() r_ = Range("A1").SpecialCells(xlLastCell).Row With Range("A1").SpecialCells(xlLastCell).Offset(2 - r_, 1).Resize(r_ - 1) .FormulaR1C1 = "=RC15&RC16" '15 и 16 - номера столбцов .Value = .Value .Replace What:="", Replacement:="=1" .SpecialCells(xlCellTypeFormulas).EntireRow.Delete .Clear End With End Sub
имхо, желательно сортировку перед этим проводить. Если кол-во несмежн. диап-ов будет >8192, то... ну в общем беда :). А если с сортировкой, то удаляем один диап-н - быстро и без ошибок. (просто недавно был подобный случай, и сам наткнулся на эти 8192)
имхо, желательно сортировку перед этим проводить. Если кол-во несмежн. диап-ов будет >8192, то... ну в общем беда :). А если с сортировкой, то удаляем один диап-н - быстро и без ошибок. (просто недавно был подобный случай, и сам наткнулся на эти 8192)nilem
Николай, спасибо за комментарий. Я тут на днях пару кодов написал с использованием ColumnDifferences - задумался а не загнутся ли... >8192 держат, но на 9000 код выпадает в ошибку - точное число не высчитывал, надоело. В общем, спасибо Даже не знаю, что теперь делать...
Николай, спасибо за комментарий. Я тут на днях пару кодов написал с использованием ColumnDifferences - задумался а не загнутся ли... >8192 держат, но на 9000 код выпадает в ошибку - точное число не высчитывал, надоело. В общем, спасибо Даже не знаю, что теперь делать...Hugo
Рон говорит, что для SpecialCells в Е2010 эта проблема практически решена. Мне кажется, с ColumnDifferences то же самое (надо проверить, конечно)
Все-таки нашел ту старую тему. Из 33397 строк нужно удалить 8911 несмежных строк (диапазонов). ColumnDifferences отработал за 17 сек - хоть и долго, но все же работает. Т.е. видимо ограничения для ColumnDifferences такие же, как и для SpecialCells. А с предварительной сортировкой на этом же примере - 0,1 сек
ПС А вообще, давно хочу записать куда-нибудь (например, на этот сайт) "шаблоны" кодов - удаление строк, словари какие-нибудь, разные циклы и пр. коды для часто встречающихся задач. Чтобы не писать по сто раз одно и то же, а забежать, скопировать, и вот - пожалуйста :), или просто ссылку дать. Куда бы все это сложить?
Рон говорит, что для SpecialCells в Е2010 эта проблема практически решена. Мне кажется, с ColumnDifferences то же самое (надо проверить, конечно)
Все-таки нашел ту старую тему. Из 33397 строк нужно удалить 8911 несмежных строк (диапазонов). ColumnDifferences отработал за 17 сек - хоть и долго, но все же работает. Т.е. видимо ограничения для ColumnDifferences такие же, как и для SpecialCells. А с предварительной сортировкой на этом же примере - 0,1 сек
ПС А вообще, давно хочу записать куда-нибудь (например, на этот сайт) "шаблоны" кодов - удаление строк, словари какие-нибудь, разные циклы и пр. коды для часто встречающихся задач. Чтобы не писать по сто раз одно и то же, а забежать, скопировать, и вот - пожалуйста :), или просто ссылку дать. Куда бы все это сложить?nilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Вторник, 13.08.2013, 00:46
Да, абсолютно согласен. Только тогда еще нужно маркер строки рядом ставить (типа 1,2,3,...). сначала сортировкой пустые вниз скинуть, поубивать, а потом по столбцу с маркерами отсортировать, чтобы все в прежний вид привести.
Да, абсолютно согласен. Только тогда еще нужно маркер строки рядом ставить (типа 1,2,3,...). сначала сортировкой пустые вниз скинуть, поубивать, а потом по столбцу с маркерами отсортировать, чтобы все в прежний вид привести._Boroda_