powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подсчет всех оставшихся строк в ренже после удаления значений
6 сообщений из 6, страница 1 из 1
Подсчет всех оставшихся строк в ренже после удаления значений
    #39853008
BigB_-_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!
Не нашел нигде в интернете решение аналогичной задачи
Есть такой ренж:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Range(Cells(2, 3), Cells(Range("C2").CurrentRegion.Rows.Count, 2)).Select
Set f = Selection
'выделил ренж с C2 по последнюю строку и задал выделение как f
Потом у меня цикл, который ищет в выделенном, строки, где нет слова  *батарейка* и удаляет их. 
 For i = 1 To f.Rows.Count
   If f.Rows(i).Find("*батарейка*", , xlValues, xlPart) Is Nothing Then
        f.Rows(i).EntireRow.Delete
        End If
        If i = f.EntireRow.Count Then Exit For
        Next i



Модератор: Учимся использовать тэги оформления кода - FAQ

Но загвоздка в строке For i = 1 To f.Rows.Count. Когда цикл возвращается к этому этапу, например после удаления какой-либо строки, то ренж остается тот же, но появляются пустые строки в конце и их уже насчитывается меньшее количество, соответственно цикл идет не по всему изначальному количеству строк в ренже и цикл прерывается раньше времени.
Существует ли команда, которая подсчитывает все строки в ренже, включая пустые ?
...
Рейтинг: 0 / 0
Подсчет всех оставшихся строк в ренже после удаления значений
    #39853010
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во всех подобных случаях цикл ведут от конца к началу
...
Рейтинг: 0 / 0
Подсчет всех оставшихся строк в ренже после удаления значений
    #39853037
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВо всех подобных случаях цикл ведут от конца к началу

Позволю себе добавить, что бывают ситуации, когда строки для удаления помещаются в массив, а потом удаляются. Но это, когда поиск строк для удаления зависит, в том числе, от удаляемых строк.
...
Рейтинг: 0 / 0
Подсчет всех оставшихся строк в ренже после удаления значений
    #39856950
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а обязательно именно построчным удалением? Это ведь небыстро.
Наложить автофильтр по условию "*батарейка*", потом copy-paste отфильтрованного после последней строки таблицы, потом снятие автофильтра и блочное удаление всего от начала таблицы до копипастнутого. Такие "блочные" операции даже на табличках 6-значного объёма в экселе работают очень шустро. И код получается не длиннее, чем сейчас.
...
Рейтинг: 0 / 0
Подсчет всех оставшихся строк в ренже после удаления значений
    #39856952
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну или соответствено: пробили допколонку признака "батарейка/не батарейка", программно отсортировали таблицу по ней, строки к удалению стали рядом, блочно их удалили одним delete. Если нужно восстановить исходный порядок, то формула в допколонке чуть сложнее получается, но непринципиально.
...
Рейтинг: 0 / 0
Подсчет всех оставшихся строк в ренже после удаления значений
    #39857055
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
foreach onecell in Range(Cells(2, 3), Cells(Range("C2").CurrentRegion.Rows.Count, 2))
    If onecell.entirerow.Find("*батарейка*", , xlValues, xlPart) Is Nothing Then onecell.entirerow.delete
next 
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подсчет всех оставшихся строк в ренже после удаления значений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]