Страницы: 1
RSS
Поиск последней ячейки в таблице, содержащей дату
 
Здравствуйте!
Подскажите, существует ли способ поиска (определения) последней ячейки в таблице, содержащей именно дату?
Пример таблицы во вложении. Согласно вложенному примеру, последняя ячейка с датой - это "D5".
 
Здравствуйте!
Уточняющий вопрос: какую ячейку определять "последней в таблице", если дата будет и в "D5", и в "E4"? Или речь идет только о ячейках столбца "D"?
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
SevenZZ, Добрый день, а в столбце D может быть что то кроме даты?
Не бойтесь совершенства. Вам его не достичь.
 
Ёк-Мок, если дата будет и в "D5", и в "E4", то последней ячейкой определять "D5". А по сути речь идет о ячейках столбца "D".
Mershik, в столбце "D" кроме даты ничего не может быть.
Изменено: SevenZZ - 22.03.2020 10:34:51
 
SevenZZ,
Цитата
SevenZZ написал:
в столбце "D" кроме даты ничего не может быть.
Код
=ПРОСМОТР(2;1/(D:D<>"");D:D)
Не бойтесь совершенства. Вам его не достичь.
 
Еще вопрос: "поиск (определение) последней ячейки" - вернуть значение ячейки, или её адрес, или выделить её, или что-либо ещё?
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Mershik, спасибо. Сейчас опробую предложенный Вами вариант.

Ёк-Мок, вернуть значение ячейки.
 
С помощью функции:
Код
Function LastDateCell(rng As Range)
    Dim ws As Worksheet
    Dim fr As Long, lr As Long, l As Long
 
    Set ws = rng.Parent
    fr = rng.Row
    lr = rng.Rows.Count + fr - 1
    
    For l = lr To fr Step -1
        If IsDate(ws.Cells(l, rng.Column)) Then
            LastDateCell = ws.Cells(l, rng.Column)
            Exit Function
        End If
    Next
    LastDateCell = "Н/Д"
End Function
 
Код
Sub iLR_D()
Dim i As Long
Dim iLastRow As Long
 iLastRow = Columns("D").Find("*", Range("D1"), xlValues, xlWhole, xlByColumns, xlPrevious).Row
   i = iLastRow
 Do While Not IsDate(Cells(i, "D"))
   i = i - 1
 Loop
   iLastRow = i
   Cells(i, "D").Select
End Sub
 
Если предположить, что дата в столбце "D" заполняется по нарастающей, то
Код
=МАКС(D:D)
Удивление есть начало познания © Surprise me!
И да пребудет с нами сила ВПР.
 
Если дата меньше или равна сегодняшней, то предлагаю такую формулу
Код
=ADDRESS(AGGREGATE(14;6;ROW(1:28)/(A1:G28=AGGREGATE(14;6;A1:G7/(A1:G7<=TODAY());1));1);AGGREGATE(14;6;COLUMN(A1:L1)/(A1:G28=AGGREGATE(14;6;A1:G7/(A1:G7<=TODAY());1));1);1)
 
Всем спасибо за помощь. Много хороших предложений.
Товарищи, немного выходя за рамки темы, вопрос, а как определить не последнюю, а предпоследнюю ячейку, содержащую дату в столбце "D"?
 
Добрый день!
Как то так (Alt+F8) запуск макроса
Страницы: 1
Наверх