Excel VBA - Erklärungen zur Datumanalyse gesucht

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.968
Hallo ihr,

ich bin es schon wieder ^^
Diesmal würde ich zwei Sachen gern zur Datumsanalyse wissen. Daher habe ich ein kleines Beispiel vorbereitet.
Darin soll das kleinste (also älteste Datum) gefunden werden.
Später möchte ich die einzelne Spalten gegen separate Dateien austauschen, aber das tut zur Problemstellung ja nichts bei.

Was mich wundert ist, dass ich schreiben muss Datum1 > Datum2, damit das kleinste Datum gefunden wird. Aber in meinem Kopf ergibt das keinen Sinn, denn mein Datum1 soll ja das älteste Datum sein.
Ich hoffe daher auf eine Aufklärung von eurer Seite.

Als zweites würde ich gern wissen, ob ich den Code noch etwas effektiver - vom Algorithmus her - gestalten kann. Habe ich das gut geschrieben oder gibt es eine bessere Logik?

Hier der Quellcode aus der Datei extrahiert:
Code:
Sub Datumanalyse()

Dim Datum1 As Date
Dim Datum2 As Date
Dim Datei1 As String

Datum1 = Worksheets("Datum").Cells(2, 1)
For i = 1 To 6
    
    Datum2 = Worksheets("Datum").Cells(2, i + 1)
    If Datum2 = "00:00:00" Then
        Datum2 = Worksheets("Datum").Cells(2, i)
    End If
    If Datum1 > Datum2 Then
        Datum1 = Worksheets("Datum").Cells(2, i + 1)
        Datei1 = Worksheets("Datum").Cells(1, i + 1)
    End If
    
Next i
MsgBox "Das kleinste Datum ist: " & Datum1 & vbNewLine & "Die Datei lautet: " & Datei1

End Sub
 

Anhänge

Zur ersten Frage:
Du vergleichst doch Datum 2 mit Datum 1.

Anders geschrieben Wenn Datum 2 < Datum 1, dann ersetzt Du Datum 1 mit Datum 2.
Du solltest solche Berechnungen immer nur einmal durchführen und die Variablen dann zuweisen. Die .Cells Anweisen also nur einmal.

Edit:
Hier mal eine Lösung:
http://www.excellernen.de/niedrigsten-wert-finden/
 
Zuletzt bearbeitet:
Ja na klar hast du recht. Daher ist es schon richtig, wenn ich sage Datum1 > Datum2 :rolleyes:
Aber ich werde es umschreiben, damit es später auch noch ersichtlich ist.

Was ich aber nicht verstehe ich:
Du solltest solche Berechnungen immer nur einmal durchführen
Ich führe doch die Analyse nur einmal pro Spalte oder später pro Datei aus. Es wird auch später immer so sein, dass das älteste Datum einer Datei immer an der gleichen Zelle (ganz oben steht). Daher eben mein Gedanke, dass ich es durchlaufen lasse.

Was du mir gezeigt hast, ist das arbeiten über die Min Funktion. Um diese zu verwenden müsste ich später alle maximal möglichen 15 Dateien erst in ein Array bringen, damit ich diese Funktion anwenden kann. Da jedoch noch mehr Inhalt in einer Datei ist also nur das Datum, würde die Excel viel zu groß werden um flott damit zu arbeiten.
 
Du kannst in der MIN Funktion auch mehrere Bereiche angeben, die müssen, denke ich, nicht in einer Datei sein.

Aber die Dateien müssen geöffnet sein.
 
Blödstell:
«00:00:00» ist ein Uhrzeitformat. Wenn ich den 25.3.12, 17:30 mit dem 13.5.13, 12:51 vergliche könnte es, erwische ich die Uhrzeit-Portion, schon passieren, dass da das Ältere größer ist als das Neuere.

CN8
 
Datum und Uhrzeit werden nicht auf Textbasis verglichen, sondern basieren auf eine Gleitkommazahl ab den 00.01.1900.
 
cumulonimbus8 danke für den Hinweis.

@miac: Meinst du den Vergleich in Zeile 11? Dieser sieht nun auch schon wieder anders aus, aufgrund des Hinweises von deinem Vorredner. Ansonsten sind die Variablen kein Text.
 
Dass die Uhrzeit der Nachkommaanteil des Datums ist war mir klar. Aber ein Datum selbst das "00:00:00" lauten mag wäre mir recht neu. Oder erwischen wir damit den 1.1.1900, Null Uhr Null-Null?
CN8
 
1.1.1900 ist 1
0.1.1900 wäre 0 und ist so, als ob Du nur eine Zeit eingeben würdest.

Zum Spielen, einfach das Datum oder die Uhrzeit als Zahl formatieren.
 
Zurück
Oben