Страницы: 1
RSS
Максимальное значение даты в столбце VBA
 
Всем привет!
Помогите решить задачу по нахождению максимального значения даты в столбце с помощью кода.
Проблема заключается в том, что использовать функцию MAX не предоставляется возможным, т.к. в этом столбце есть текстовые значения.
Формат даты если подвести курсор к значениям - общий.
Нашел на зарубежных форумах код. Перебирает значения, формирует массив дат, и потом там находит максимальное значение.
Но мне выдает 0. Подскажите почему?
Буду признателен за помощь.
Код
Sub test()
Dim Date_Array() As Date, i As Long, j As Long
With Sheets("Отчет")
    For i = 12 To 3479
        If IsDate(.Range("C" & i).Value) Then
            j = j + 1
            ReDim Preserve Date_Array(1 To j)
            Date_Array(j) = .Range("C" & i).Value
        End If
    Next
End With
MsgBox IIf(j = 0, "No date", Application.Max(Date_Array))
End Sub
 
Пример приложите где 0 выходит, может лист не тот или столбец )
Изменено: Илья Демид - 22.08.2017 12:11:41
 
Приложите файл или его кусок. Что там у Вас за "текстовые значения"? Дата как текст, а не как дата? Или просто какой-то текст?
Скажи мне, кудесник, любимец ба’гов...
 
Лист "Отчет", столбец "С". Формат ячейки общий, отображается как дата.
Возможно он воспринимается как текст? Тогда как корректно сделать выборку? И найти макс значение?
Дата
01.08.2017
02.08.2017
Итог
01.08.2017
05.08.2017
Итог
04.08.2017
 
Limos, Вы на форуме с 2014 года :) файл дайте!
Изменено: Илья Демид - 22.08.2017 12:20:43
 
Limos, кнопка цитирования не для ответа. Текст в собщении - это не файл-пример.
 
В таком виде работает
Код
Sub test()
Dim Date_Array() As Long, i As Long, j As Long
With Sheets("Отчет")
    For i = 1 To 50
        If IsDate(.Range("C" & i).Value) Then
            j = j + 1
            ReDim Preserve Date_Array(1 To j)
            Date_Array(j) = Format(.Range("C" & i), "0")
        End If
    Next
End With
MsgBox IIf(j = 0, "No date", Format(WorksheetFunction.Max(Date_Array), "dd.mm.yyyy"))
End Sub
 
Сейчас попробую, потом отпишусь) файл выложить не могу, на работе.... был бы дома выложил
 
Дмитрий, круто, спасибо.
Код работает.
 
Так на чем Вы пробовать будете?  
 
Limos, открою Вам небольшую тайну - для решения Вашей задачи вообще не нужен макрос с циклом (и уж тем более с ReDim Preserve), которые отрабатывают небыстро (особенно ReDim Preserve).
На самом деле все решается в 3 строки кода, одна из которых нахождение последней заполненной ячейки (в итоге 2 действительно нужных Вам строки)
Скажи мне, кудесник, любимец ба’гов...
Страницы: 1
Наверх