Bei der folgenden Lösung handelt es sich um ein Makro, das gemäß Ihren Tags nicht die Lösung ist, die Sie suchen. Es verwendet jedoch Arbeitsblattfunktionen, und Sie können möglicherweise abhängig von der Art des CSV-Imports eine Arbeitsblattlösung erstellen.
Ich hoffe, dass die eine oder andere dieser Lösungen für Sie funktioniert.
Hinweis: Keine Lösung hängt von den sortierten Daten ab.
Erklärung der VBA-Lösung und mögliches Arbeitsblattäquivalent
Der Schritt in der Lösung sind:
Suchen Sie die unterste Zeile der Daten. Das Tastaturäquivalent des VBA lautet: Gehen Sie zum Ende der Spalte A und gehen Sie zur ersten nicht leeren Zelle. Möglicherweise benötigen Sie jedoch kein Arbeitsblatt, das diesem Schritt entspricht.
Ich kann mir keine Arbeitsblatt-Entsprechung für die nächsten Anweisungen vorstellen, in denen Datumszeichenfolgen in Datumsnummern umgewandelt werden. Diese Konvertierung ist nicht erforderlich, wenn Ihr Import diese Konvertierung für Sie durchführt.
Der nächste Schritt besteht darin, den maximalen Wert in Spalte A zu ermitteln. Die Excel-Datumsangaben sind Zahlen, so dass MAX dies für Sie erledigt. Wenn Sie wissen, dass es niemals mehr als 2000 Zeilen geben wird, können Sie Folgendes verwenden:
=MAX(A2:A2000)
Der letzte Schritt besteht darin, die Zeile für den Maximalwert zu identifizieren. Wenn sich der Maximalwert in Zelle X1 befindet, gilt Folgendes:
=1 + MATCH(X1,A2:A2000,0)
ist das Tastaturäquivalent dieses Schritts.
VBA-Lösung
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