Hi Jelena,
ich kann dir höchstens eine VBA-Lösung anbieten:
Sub Geburtstage()
Dim arrDaten()
Dim lngZaehler As Long
Dim lngZeile As Long
Dim lngLetzte As Long
lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row
ReDim arrDaten(0 To lngLetzte - 2, 0 To 1)
For lngZaehler = 0 To lngLetzte - 2
arrDaten(lngZaehler, 0) = Cells(lngZaehler + 2, 1)
If DateSerial(Year(Date), Month(Cells(lngZaehler + 2, 3)), Day(Cells(lngZaehler + 2, 3))) >= Date Then
arrDaten(lngZaehler, 1) = DateSerial(Year(Date), Month(Cells(lngZaehler + 2, 3)), Day(Cells(lngZaehler + 2, 3)))
Else
arrDaten(lngZaehler, 1) = DateSerial(Year(Date) + 1, Month(Cells(lngZaehler + 2, 3)), Day(Cells(lngZaehler + 2, 3)))
End If
Next lngZaehler
Range("H2").Resize(lngLetzte - 2, 2) = arrDaten()
Range(Cells(2, 8), Cells(lngLetzte, 9)).Sort key1:=Range("I2"), order1:=xlAscending, Header:=xlNo
For lngZaehler = 2 To 6
lngZeile = Cells(lngZaehler, 8) + 1
If Cells(lngZaehler, 4) = "" Then
Cells(lngZaehler, 7) = Cells(lngZeile, 2) & " hat am " & Format(Cells(lngZaehler, 9), "ddd. dd.mmm.yyyy") & " den " & Cells(lngZeile, 5) & ". Geburtstag"
Else
Cells(lngZaehler, 7) = Cells(lngZeile, 2) & " hätte am " & Format(Cells(lngZaehler, 9), "ddd. dd.mmm.yyyy") & " den " & Cells(lngZeile, 5) & ". Geburtstag"
End If
Next lngZaehler
Range(Cells(2, 8), Cells(lngLetzte, 9)).ClearContents
End Sub
Beachte: die Spalten H und I werden vom Code benötigit um alle Daten zu sortieren. Sie werden nach Ermittlung der relevanten 5 Geburtstage wieder geleert.
Bis später, Karin