Решение ниже включает макрос, который, согласно вашим тегам, не является решением, которое вы ищете. Тем не менее, он использует функции рабочего листа, и вы можете создать решение для рабочего листа в зависимости от характера импорта CSV.
Я надеюсь, что одно или другое из этих решений работает для вас.
Примечание: ни одно из решений не зависит от сортируемых данных.
Объяснение решения VBA и возможного эквивалента листа
Шаг в решении:
Найдите нижний ряд данных. Эквивалент VBA для клавиатуры: перейти к нижней части столбца A, а затем перейти к первой непустой ячейке. Однако вам может не понадобиться рабочий лист, эквивалентный этому шагу.
Я не могу думать о листе, эквивалентном следующим операторам, которые преобразуют строки даты в числа даты. Это преобразование не потребуется, если ваш импорт выполняет это преобразование для вас.
Следующий шаг - найти максимальное значение в столбце A. Даты Excel - это числа, поэтому MAX сделает это за вас. Если вы знаете, что никогда не будет более 2000 строк, вы можете использовать:
=MAX(A2:A2000)
Последний шаг - определить строку для максимального значения. Если максимальное значение находится в ячейке X1, тогда:
=1 + MATCH(X1,A2:A2000,0)
является клавиатурным эквивалентом этого шага.
VBA Solution
Option Explicit Sub FindLatestDate() Dim DateCol() As Variant Dim DateMax As Date Dim RngData As String Dim RowDateMax As Integer Dim RowMax As Integer With Sheets("Sheet2") RowMax = .Cells(Rows.Count, "A").End(xlUp).Row ' Find bottom column of data. RngData = "A2:A" & RowMax 'Assume first data row is 2. ' If column A contains strings that Excel can correctly ' interpret as dates, force Excel to do so. DateCol = .Range(RngData).Value .Range(RngData).Value = DateCol ' Excel dates are integer values. Excel date/times are real values. ' Get the maximum value in the range. DateMax = Application.WorksheetFunction.Max(.Range(RngData)) ' The use of CLng assumes the date does not include a time. ' Use CDbl if the date does include a time RowDateMax = 1 + _ Application.WorksheetFunction.Match(CLng(DateMax), .Range(RngData), 0) ' RowDateMax gives you the value you seek. ' This code does not rely on the CSV being in date order End With End Sub