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

Вход

Регистрация

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

 

= Мир MS Excel/последняя ячейка в независимости от фильтрации - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » последняя ячейка в независимости от фильтрации (Макросы/Sub)
последняя ячейка в независимости от фильтрации
skais Дата: Воскресенье, 22.10.2017, 14:47 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

Excel 2010
Столкнулся с проблемой , даже не подозревал об этом.
[vba]
Код
Cells(Rows.Count, "A").End(xlUp).Row
[/vba]
Такой метод возвращает последнюю заполненую ячейку в столбце A. Однако, если после фильтрации часть строк будет скрыта, то этот метод вернет только последнюю видимую заполненную ячейку. А как вернуть последнюю заполненную ячейку в независимости от фильтрации?
 
Ответить
СообщениеСтолкнулся с проблемой , даже не подозревал об этом.
[vba]
Код
Cells(Rows.Count, "A").End(xlUp).Row
[/vba]
Такой метод возвращает последнюю заполненую ячейку в столбце A. Однако, если после фильтрации часть строк будет скрыта, то этот метод вернет только последнюю видимую заполненную ячейку. А как вернуть последнюю заполненную ячейку в независимости от фильтрации?

Автор - skais
Дата добавления - 22.10.2017 в 14:47
RAN Дата: Воскресенье, 22.10.2017, 14:51 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщениеhttp://www.excelworld.ru/forum/10-34173-1

Автор - RAN
Дата добавления - 22.10.2017 в 14:51
skais Дата: Воскресенье, 22.10.2017, 15:05 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация: 29 ±
Замечаний: 20% ±

Excel 2010
RAN, там тоже что и у меня, не понял Вашей ссылки
Вот этот метод определяет верно но мне нужно по столбцу [vba]
Код
ActiveSheet.UsedRange.Rows.Count
[/vba]
 
Ответить
СообщениеRAN, там тоже что и у меня, не понял Вашей ссылки
Вот этот метод определяет верно но мне нужно по столбцу [vba]
Код
ActiveSheet.UsedRange.Rows.Count
[/vba]

Автор - skais
Дата добавления - 22.10.2017 в 15:05
nilem Дата: Воскресенье, 22.10.2017, 15:47 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
может, вот эдак вот:
[vba]
Код
Sub ttt()
Dim lr&
With ActiveSheet
    If .FilterMode Then
        lr = .AutoFilter.Range.Rows.Count
    Else
        lr = Cells(Rows.Count, 1).End(xlUp).Row
    End If
End With

MsgBox lr
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеможет, вот эдак вот:
[vba]
Код
Sub ttt()
Dim lr&
With ActiveSheet
    If .FilterMode Then
        lr = .AutoFilter.Range.Rows.Count
    Else
        lr = Cells(Rows.Count, 1).End(xlUp).Row
    End If
End With

MsgBox lr
End Sub
[/vba]

Автор - nilem
Дата добавления - 22.10.2017 в 15:47
RAN Дата: Воскресенье, 22.10.2017, 16:06 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Обнаружил не понятное.
Если строки скрыть, то
[vba]
Код
lr = Sheets(1).Columns(2).Find("*", , , , xlByRows, xlPrevious).Row
[/vba]
то находит последнюю строку, но, если их скрыть фильтром - находит погоду в Африке.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеОбнаружил не понятное.
Если строки скрыть, то
[vba]
Код
lr = Sheets(1).Columns(2).Find("*", , , , xlByRows, xlPrevious).Row
[/vba]
то находит последнюю строку, но, если их скрыть фильтром - находит погоду в Африке.

Автор - RAN
Дата добавления - 22.10.2017 в 16:06
nilem Дата: Воскресенье, 22.10.2017, 16:48 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
То же с массивами. Если берем массив из диапазона, и строки в диапазоне скрыты, то норм, а если скрыты фильтром - Африка.


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеТо же с массивами. Если берем массив из диапазона, и строки в диапазоне скрыты, то норм, а если скрыты фильтром - Африка.

Автор - nilem
Дата добавления - 22.10.2017 в 16:48
KuklP Дата: Воскресенье, 22.10.2017, 18:40 | Сообщение № 7
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Тут это рассматривалось пять лет назад.. beer


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеТут это рассматривалось пять лет назад.. beer

Автор - KuklP
Дата добавления - 22.10.2017 в 18:40
InExSu Дата: Воскресенье, 22.10.2017, 20:46 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
пять лет назад

Привет!

ТС спрашивает про столбец, а Вы ему предлагаете UsedRange
А ведь есть случаи, когда номер строки последней заполненной ячейки в колонке меньше чем .UsedRange.Rows.Count и чем .CurrentRegion.Rows.Count

[vba]
Код
Sub ПоследняяЗаполненнаяЯчейкаКолонки()
    With ActiveSheet
        For i = .Cells(1, 1).CurrentRegion.Rows.Count To 1 Step -1
            If .Cells(i, 1) <> "" Then Exit For
        Next
    End With
    MsgBox i
End Sub
[/vba]
К сообщению приложен файл: skais_______exc.xlsb (14.0 Kb)


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
пять лет назад

Привет!

ТС спрашивает про столбец, а Вы ему предлагаете UsedRange
А ведь есть случаи, когда номер строки последней заполненной ячейки в колонке меньше чем .UsedRange.Rows.Count и чем .CurrentRegion.Rows.Count

[vba]
Код
Sub ПоследняяЗаполненнаяЯчейкаКолонки()
    With ActiveSheet
        For i = .Cells(1, 1).CurrentRegion.Rows.Count To 1 Step -1
            If .Cells(i, 1) <> "" Then Exit For
        Next
    End With
    MsgBox i
End Sub
[/vba]

Автор - InExSu
Дата добавления - 22.10.2017 в 20:46
KuklP Дата: Воскресенье, 22.10.2017, 20:55 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Умничаем? :) .Cells(1, 1).CurrentRegion может состоять из одной(!) ячейки. И что тогда насчитает Ваша программа? А UsedRange охватывает ВСЕ задействованные ячейки и используется исключительно для сокращения диапазона поиска. Причем, независимо от наличия автофильтра и\или скрытых строк. B)
P.S. И таки при должном упорстве, Вы могли бы понять, что в коде по ссылке поиск идет именно по столбцу.


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


Сообщение отредактировал KuklP - Воскресенье, 22.10.2017, 20:57
 
Ответить
СообщениеУмничаем? :) .Cells(1, 1).CurrentRegion может состоять из одной(!) ячейки. И что тогда насчитает Ваша программа? А UsedRange охватывает ВСЕ задействованные ячейки и используется исключительно для сокращения диапазона поиска. Причем, независимо от наличия автофильтра и\или скрытых строк. B)
P.S. И таки при должном упорстве, Вы могли бы понять, что в коде по ссылке поиск идет именно по столбцу.

Автор - KuklP
Дата добавления - 22.10.2017 в 20:55
InExSu Дата: Воскресенье, 22.10.2017, 21:36 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 648
Репутация: 96 ±
Замечаний: 0% ±

Excel 2010, 365
при должном упорстве

Пардон, переоткрыл Ваш код hands


Разработчик Битрикс24 php, Google Apps Script, VBA Excel Windows/Mac
 
Ответить
Сообщение
при должном упорстве

Пардон, переоткрыл Ваш код hands

Автор - InExSu
Дата добавления - 22.10.2017 в 21:36
Мир MS Excel » Вопросы и решения » Вопросы по VBA » последняя ячейка в независимости от фильтрации (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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