Mit Excel die aktuellste Zeile aus einem CSV auswählen?

480
random65537

Ich habe eine CSV, die mit einem Datums- / Uhrzeitfeld beginnt, und ich muss importieren und die letzte Zeile auswählen und in meinen Formeln darauf verweisen.

Ich experimentiere mit Pivot-Tabellen und gerade jetzt Rank und VLookup.

Wie können Sie am besten auf die letzte Zeile zugreifen und sie an einem festen Ort speichern?

0
Wollen Sie damit sagen, dass jede Zeile mit einem Datums- / Uhrzeitfeld beginnt? Sind die Zeilen auch in chronologischer Reihenfolge? Walt Ritscher vor 12 Jahren 0
Ja, es beginnt mit einem Datumszeitfeld. Die Zeilen müssen sortiert werden. obwohl ich möglicherweise Vbscript dafür verwenden muss. random65537 vor 12 Jahren 0

1 Antwort auf die Frage

0
Tony Dallimore

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