Im Folgenden werden wir ein Programm in Excel VBA suchen, die ersten Geburtstage Monate sortiert und Tage Sekunde (so wir Jahre ignorieren). Wir wollen den Geburtstag mit der niedrigsten Nummer des Monats an der ersten Position. Wenn es Geburtstage mit gleichen Monat Zahlen sind, wollen wir den Geburtstag mit der niedrigsten Tagesnummer zuerst. Sind Sie bereit? Situation:

Sort Birthdays Example

Hinweis: Daten sind in US-Format. Monate ersten, zweiten Tage. Diese Art von Format ist abhängig von Ihrer Windows-Ländereinstellungen.

  1. Zuerst erklären wir acht Variablen. Ein Date-Variable wir tempDate nennen, eine String-Variable nennen wir tempName. Die anderen sechs Variablen sind Integer-Variablen mit Namen monthToCheck, dayToCheck, Monatnächster, dayNext, i und j.

Dim tempDate As Date, tempName As String

Dim monthToCheck As Integer, dayToCheck As Integer, monthNext As Integer, dayNext As Integer, i As Integer, j As Integer

Wir beginnen 2. zwei für Next-Schleifen.

For i = 2 To 13

For j = i + 1 To 13

Beispiel: für i = 2, j = 3, 4, …​, 12 und 13 werden überprüft.

  1. Wir initialisieren vier Integer-Variablen. Wir verwenden den Monat Funktion den Monat ein Datum zu erhalten, und der Tag-Funktion den Tag eines Datums zu erhalten.

monthToCheck = month(Cells(i, 2).Value)

dayToCheck = day(Cells(i, 2).Value)

monthNext = month(Cells(j, 2).Value)

dayNext = day(Cells(j, 2).Value)

Zum Beispiel: am Anfang, für i = 2; das Datum des Bregje und j = i + 1 = 2 + 1 = 3; das Datum des Niels wird gewählt.

  1. Um die Daten richtig zu sortieren, vergleichen wir das erste Datum (monthToCheck und dayToCheck) mit dem nächsten Termine (Monatnächster und dayNext). Wenn der nächste Termin ‚senken‘ ist, tauschen wir die Daten und Namen. Fügen Sie die folgende If Then-Anweisung.

If (monthNext < monthToCheck) Or (monthNext = monthToCheck And dayNext < dayToCheck) Then

End If

Wenn die obige Aussage wahr ist, tauschen wir die Daten und Namen.

Zum Beispiel: i 2 = und j = 3, das Datum des Bregje und Niels geprüft. Monatnächster = 6, monthToCheck = 2. Die obige Aussage ist nicht wahr, da Monatnächster höher als monthToCheck ist. Excel-VBA-Schritte j um 1 und wiederholt die Codezeilen für i = 2 und j = 4. Sie können leicht erkennen, dass Joost (j = 4) eine höhere Monatszahl als Bregje, so dass wir zum nächsten gehen. Wir bekommen das gleiche Ergebnis für j = 5 und j 6. = Wenn wir j ankommen = 7, haben wir die folgenden Variablen: Monatnächster = 2 und dayNext = 9. MonthToCheck = 2 und dayToCheck = 12. Nun ist die obige Aussage ist wahr, da Monatnächster = monthToCheck und dayNext (9) niedriger ist als dayToCheck (12).

  1. Wir swap die Daten. Wir speichern vorübergehend ein Datum zu tempDate, so dass Excel VBA richtig die Daten austauschen können. Fügen Sie die folgenden Codezeilen in der If-Anweisung.

'swap dates

tempDate = Cells(i, 2).Value

Cells(i, 2).Value = Cells(j, 2).Value

Cells(j, 2).Value = tempDate
  1. Wir tun das gleiche mit den Namen. Fügen Sie die folgenden Codezeilen in der If-Anweisung.

'swap names

tempName = Cells(i, 1).Value

Cells(i, 1).Value = Cells(j, 1).Value

Cells(j, 1).Value = tempName
  1. Wir schließen die zweite For Next-Schleife (Direkt vor der If-Anweisung).

Next j

Für i 2 und j = = 7, tauschte Excel VBA die Daten und Namen. Das heißt, wir Richard an der ersten Position und Bregje an Position 7. bekommen, dass auch bedeutet, dass wir einen neuen monthToCheck und dayToCheck zu Beginn der nächsten Iteration erhalten (für i = 2 und j = 8). Wir werden nun Richard mit Dineke (j = 8) vergleichen. Sie können leicht erkennen, dass es nicht notwendig ist, diese Daten und Namen zu ersetzen, weil Richard ein ‚unteres‘ Datum hat. Wie in der Tat gibt es keine Notwendigkeit, Richard zu ersetzen (i = 2) mit Jan (j = 9), Wendy (j = 10), Jeroen (j = 11), John (j = 12) und Debby (j = 13). Das liegt daran, dass Richard das ‚niedrigste‘ Datum. Auf diese Weise Excel VBA erhalten (für i = 2), um das ‚niedrigste‘ Datum an der ersten Position. Um die zweite ‚niedrigste‘ Datum in der zweiten Position zu erhalten, wiederholt Excel VBA exakt die gleichen Schritte für i 3. = Um das dritte ‚niedrigste‘ Datum an der dritten Position zu erhalten, wiederholt Excel VBA exakt die gleichen Schritte für i 4 =, usw.

  1. Schließen Sie die erste Schleife For Next (Direkt vor der If-Anweisung).

Next i
  1. Ihr Programm testen.

Ergebnis:

Sort Birthdays in Excel VBA