Страницы: 1
RSS
Как вывести на экран значение последней заполненной ячейки диапазона?
 
Доброго времени суток, друзья!
Есть диапазон значений, находящийся в столбце 'D', необходимо вывести на экран значение самой последней заполненной ячейки диапазона. Подскажите, пожалуйста, как реализовать. Спасибо, друзья!
Улыбнись.
 
КАК ОПРЕДЕЛИТЬ ПОСЛЕДНЮЮ ЯЧЕЙКУ НА ЛИСТЕ ЧЕРЕЗ VBA?
Согласие есть продукт при полном непротивлении сторон
 
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=74999&MID=s
https://support.microsoft.com/en-us/help/291308/how-to-select-cells-ranges-by-using-visual-basic-pro...
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=97730&am...
...

Судя по всему попытка поиска даже не совершалась.
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо. Решил пользоваться кодом:
Код
Kolichestvo = Range("J:J").Find("*", Range("J1"), xlValues, xlWhole, xlByRows, xlPrevious) ' поиск последней заполненной ячейки в столбце J, начиная с J1

Улыбнись.
 
falmrom,
будьте бдительны это: Kolichestvo = Range("J:J").Find("*"...
не найдет последнюю заполненную ячейку в колонке Д
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко написал:
не найдет последнюю заполненную ячейку в колонке Д
и не учитывает скрытые строки и столбцы
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий Щербаков, Раз уж подключились. Давеча проскользнула тема с вопросом, как определить последнюю заполненную ячейка столбца в отфильтрованном диапазоне, при этом скрытые строки должны учитываться.
End(xlUp).Row - пропустить скрытые значения.
UsedRange. - не подходить так как даст с пустыми, если последние ячейки столбца диапазона не заполнены.
SpecialCells - тоже не то
Find - тоже что и End(xlUp).Row при скрытых

ну не Lookup же листа использовать!
.  
По вопросам из тем форума, личку не читаю.
 
БМВ, навскидку приходит в голову только костыль — запомнить скрытие, раскрыть, End(xlUp).Row, скрыть как было...
 
Цитата
StoTisteg написал:
костыль — запомнить скрытие,
Не красиво, да и перебрать массив проще. При этом от последней строки до той которую End(xlUp).Row найдет, ведь скрытые которые нас интересуют между ними, а значит весь диапазон столбца перебирать не нужно.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
ну не Lookup же листа использовать!
вот как ни странно - но таки-да, можно его. Хотя в спорных ситуациях можно и комбинировать(если использовать функции листа не хочется):
сначала UsedRange - для определения глобально последней ячейки
далее End или Find(зависит от того, есть ли конкретный столбец для определения) - для определения последней видимой ячейки.
А потом, если значения не равны, то загоняю в массив данные от последней видимой до последней и цикл снизу вверх до первой заполненной.
Изменено: Дмитрий Щербаков - 14.05.2018 13:48:27
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
    dd = ActiveSheet.AutoFilter.Range.Count
Изменено: _Boroda_ - 14.05.2018 14:13:46
Скажи мне, кудесник, любимец ба’гов...
 
формула массива
Код
=ИНДЕКС(D:D;ПОИСКПОЗ(1;ЕСЛИ(D:D>0;)))
 
_Boroda_,
см.вложение
Изменено: Ігор Гончаренко - 14.05.2018 14:13:10
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
_Boroda_,  Александр это не указал, забыл , но оно тоже покажет не последнюю в конкретном столбце, а если фильтр по нескольким столбцам то совсем беда ..
, ну и конечно просто скрытые строки тоже могут быть, без фильтра.
Цитата
Дмитрий Щербаков написал:
А потом, если значения не равны, то загоняю в массив данные от последней видимой до последней и цикл снизу вверх до первой заполненной.
ну собственно писали почти одновременно я #9 Вы #10 :-)
По вопросам из тем форума, личку не читаю.
 
Игорь, да, согласен. Но все-таки пригодится:
Код
    With sh.AutoFilter
        r1_ = .Range.Count / .Range.Columns.Count
    End With
можно использовать вместо UsedRange.Rows.Count. Диапазон проверки может (не обязательно) стать намного меньше. Да и бывает, что через несколько строк под таблицей с автофильтром некоторые особо шустрые товарищи пытаются еще какие-то данные написать. Тогда UsedRange вообще не прокатит
Изменено: _Boroda_ - 14.05.2018 14:41:36
Скажи мне, кудесник, любимец ба’гов...
 
Читаем и перечитываем классику :)  
.
Владимир
 
Ігор Гончаренко, спасибо за внимательность, но при внедрении строки в код, я, естественно, поменял адрес столбца :)
Улыбнись.
 
Всем большое спасибо за такую детальную проработку вопроса, но мне для работы кода, хватило одной строки, которую я и указал выше. Нюансы, которые обсуждались далее - пригодятся позже! Большое всем спасибо за заблаговременные ответы)))
Улыбнись.
Страницы: 1
Наверх