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

Вход

Регистрация

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

 

= Мир MS Excel/Удаление строк по значению в ячейке....? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строк по значению в ячейке....? (Макросы Sub)
Удаление строк по значению в ячейке....?
wwizard Дата: Понедельник, 12.08.2013, 19:22 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Всем здраствуйте.
Есть файл в екселе на 40000 строк.
есть колонка в которой иногда пусто, 15 и 16.
Очень хочу макрос, который мог бы удалять всю строку целиком, соединяя при этом оставшиеся строки (ну чтобы не было пустой строки между ними) если в колонке 15 отсутствует значение, и не удалял если в столбце 16 значение присутствует.
Сложноая это вещь? Два дня ищу по форумам - нигде не могу найти, ничего подобного.
К сообщению приложен файл: 4410122.xlsx (15.5 Kb)
 
Ответить
СообщениеВсем здраствуйте.
Есть файл в екселе на 40000 строк.
есть колонка в которой иногда пусто, 15 и 16.
Очень хочу макрос, который мог бы удалять всю строку целиком, соединяя при этом оставшиеся строки (ну чтобы не было пустой строки между ними) если в колонке 15 отсутствует значение, и не удалял если в столбце 16 значение присутствует.
Сложноая это вещь? Два дня ищу по форумам - нигде не могу найти, ничего подобного.

Автор - wwizard
Дата добавления - 12.08.2013 в 19:22
RAN Дата: Понедельник, 12.08.2013, 19:50 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А если оставлять 13, а 17 удалять, то можно еще пару месяцев искать.
Алгоритм решения задачи примитивен.
И на форуме решений завались.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА если оставлять 13, а 17 удалять, то можно еще пару месяцев искать.
Алгоритм решения задачи примитивен.
И на форуме решений завались.

Автор - RAN
Дата добавления - 12.08.2013 в 19:50
KuklP Дата: Понедельник, 12.08.2013, 20:17 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
http://www.excelworld.ru/forum/10-5717-1
Допиливайте.
Для удаления надо будет просматривать от последней к первой.
Гы) Исправил. hands
Спасибо, Андрей.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Понедельник, 12.08.2013, 20:36
 
Ответить
Сообщениеhttp://www.excelworld.ru/forum/10-5717-1
Допиливайте.
Для удаления надо будет просматривать от последней к первой.
Гы) Исправил. hands
Спасибо, Андрей.

Автор - KuklP
Дата добавления - 12.08.2013 в 20:17
RAN Дата: Понедельник, 12.08.2013, 20:27 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
:D
Серега, а ты куда ссылку приложил?


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение:D
Серега, а ты куда ссылку приложил?

Автор - RAN
Дата добавления - 12.08.2013 в 20:27
_Boroda_ Дата: Понедельник, 12.08.2013, 21:08 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У меня тут без цикла родилось
[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
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ меня тут без цикла родилось
[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
[/vba]

Автор - _Boroda_
Дата добавления - 12.08.2013 в 21:08
KuklP Дата: Понедельник, 12.08.2013, 21:10 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Шаман!


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеШаман!

Автор - KuklP
Дата добавления - 12.08.2013 в 21:10
nilem Дата: Понедельник, 12.08.2013, 22:39 | Сообщение № 7
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
.SpecialCells(xlCellTypeFormulas).EntireRow.Delete

имхо, желательно сортировку перед этим проводить. Если кол-во несмежн. диап-ов будет >8192, то... ну в общем беда :). А если с сортировкой, то удаляем один диап-н - быстро и без ошибок.
(просто недавно был подобный случай, и сам наткнулся на эти 8192)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
.SpecialCells(xlCellTypeFormulas).EntireRow.Delete

имхо, желательно сортировку перед этим проводить. Если кол-во несмежн. диап-ов будет >8192, то... ну в общем беда :). А если с сортировкой, то удаляем один диап-н - быстро и без ошибок.
(просто недавно был подобный случай, и сам наткнулся на эти 8192)

Автор - nilem
Дата добавления - 12.08.2013 в 22:39
Hugo Дата: Понедельник, 12.08.2013, 23:01 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3250
Репутация: 707 ±
Замечаний: 0% ±

2019
Николай, спасибо за комментарий.
Я тут на днях пару кодов написал с использованием ColumnDifferences - задумался а не загнутся ли... :(
>8192 держат, но на 9000 код выпадает в ошибку - точное число не высчитывал, надоело.
В общем, спасибо :(
Даже не знаю, что теперь делать...


excel@nxt.ru
webmoney: E265281470651 Z422237915069
 
Ответить
СообщениеНиколай, спасибо за комментарий.
Я тут на днях пару кодов написал с использованием ColumnDifferences - задумался а не загнутся ли... :(
>8192 держат, но на 9000 код выпадает в ошибку - точное число не высчитывал, надоело.
В общем, спасибо :(
Даже не знаю, что теперь делать...

Автор - Hugo
Дата добавления - 12.08.2013 в 23:01
nilem Дата: Вторник, 13.08.2013, 00:15 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Даже не знаю, что теперь делать...

Рон говорит, что для SpecialCells в Е2010 эта проблема практически решена. Мне кажется, с ColumnDifferences то же самое (надо проверить, конечно)

Все-таки нашел ту старую тему. Из 33397 строк нужно удалить 8911 несмежных строк (диапазонов). ColumnDifferences отработал за 17 сек - хоть и долго, но все же работает. Т.е. видимо ограничения для ColumnDifferences такие же, как и для SpecialCells.
А с предварительной сортировкой на этом же примере - 0,1 сек

ПС А вообще, давно хочу записать куда-нибудь (например, на этот сайт) "шаблоны" кодов - удаление строк, словари какие-нибудь, разные циклы и пр. коды для часто встречающихся задач. Чтобы не писать по сто раз одно и то же, а забежать, скопировать, и вот - пожалуйста :), или просто ссылку дать. Куда бы все это сложить?


Яндекс.Деньги 4100159601573

Сообщение отредактировал nilem - Вторник, 13.08.2013, 00:46
 
Ответить
Сообщение
Даже не знаю, что теперь делать...

Рон говорит, что для SpecialCells в Е2010 эта проблема практически решена. Мне кажется, с ColumnDifferences то же самое (надо проверить, конечно)

Все-таки нашел ту старую тему. Из 33397 строк нужно удалить 8911 несмежных строк (диапазонов). ColumnDifferences отработал за 17 сек - хоть и долго, но все же работает. Т.е. видимо ограничения для ColumnDifferences такие же, как и для SpecialCells.
А с предварительной сортировкой на этом же примере - 0,1 сек

ПС А вообще, давно хочу записать куда-нибудь (например, на этот сайт) "шаблоны" кодов - удаление строк, словари какие-нибудь, разные циклы и пр. коды для часто встречающихся задач. Чтобы не писать по сто раз одно и то же, а забежать, скопировать, и вот - пожалуйста :), или просто ссылку дать. Куда бы все это сложить?

Автор - nilem
Дата добавления - 13.08.2013 в 00:15
KuklP Дата: Вторник, 13.08.2013, 03:59 | Сообщение № 10
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
В готовые решения.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеВ готовые решения.

Автор - KuklP
Дата добавления - 13.08.2013 в 03:59
_Boroda_ Дата: Вторник, 13.08.2013, 09:34 | Сообщение № 11
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
имхо, желательно сортировку перед этим проводить.

Да, абсолютно согласен.
Только тогда еще нужно маркер строки рядом ставить (типа 1,2,3,...). сначала сортировкой пустые вниз скинуть, поубивать, а потом по столбцу с маркерами отсортировать, чтобы все в прежний вид привести.


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

Да, абсолютно согласен.
Только тогда еще нужно маркер строки рядом ставить (типа 1,2,3,...). сначала сортировкой пустые вниз скинуть, поубивать, а потом по столбцу с маркерами отсортировать, чтобы все в прежний вид привести.

Автор - _Boroda_
Дата добавления - 13.08.2013 в 09:34
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строк по значению в ячейке....? (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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