Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wer hat in bestimmtem Zeitraum Geburtstag

Forumthread: Wer hat in bestimmtem Zeitraum Geburtstag

Wer hat in bestimmtem Zeitraum Geburtstag
11.12.2005 17:38:03
Florian.Reinartz
Hallo, es ist mal wieder so weit, ich bin mit meinem Latein am ende ;-)
vielleicht kann mir einer von Euch helfen...
Ich habe eine Liste mit Namen (A), Geburtstag (E) und Alter (F). Das Alter wird automatisch ermittelt.
In einer Zelle gibt man das Anfangsdatum (M5) und das Enddatum (M7) des Zeitraumes an. Außerdem gibt man noch ein Mindestalter an.
Jetzt möchte ich mit Hilfe von VB eine Funktion entwickeln, die schaut, ob ein Datum aus Spalte E in angegebenen Zeitraum liegt, wenn ja, soll kontrolliert werden ob es das Alterskriterium erfüllt. Ist das der Fall sollen der Name in L12 und das Alter in N12 eingetragen werden.
Die Ausgabetabelle beginnt in Zeile 12 (nach unten offen) und befindet sich im selben Sheet wie die Basistabelle!
Mein proble, ist, dass dadurch das ein Geburtsdatum natürlich ein anders Jahr ist als das aktuelle findet er keine übereinstimmungen.
Vielen Dank
F. Reinartz
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wer hat in bestimmtem Zeitraum Geburtstag
ransi
hallo florian
lädst du mal ein kleines beispiel auf den server?
ransi
AW: Wer hat in bestimmtem Zeitraum Geburtstag
ransi
hallo florian
interesse an einer formellösung?
https://www.herber.de/bbs/user/29118.xls
spalte J kannst du ausblenden und die zellen M7 und M9 schriftfarbe auf grau setzen.
das ganze ginge auch ohne die hilfsspalte und die beiden hilfszellen, aber dann wirds unübersichtlich.
ransi
Anzeige
AW: Wer hat in bestimmtem Zeitraum Geburtstag
12.12.2005 00:57:47
FLorian
Klasse, hast mir sehr geholfen. Habe es aber nicht mit den Formeln in den Zellen gemacht sondern über VB, kann dann auch noch ein paar formatierungen automatisieren.
Als Basis dienen aber Deine Ideen mit Spalte J, Zelle M7 und M9. Durch VB muss ich auch die Zeile 2 nicht ausblenden...
Hier mein VB-Skript:

Private Sub Workbook_Open()
'---- Auswertungstabelle säubern -----'
Range("L12:N600").Select
Selection.ClearContents
Range("A2").Select
'------------ Zeitraum entfernen ---------------'
Range("M5").Select
Selection.ClearContents
Range("M7").Select
Selection.ClearContents
'---- überflüssige Zeilen löschen -----'
Range("K22:O600").Select
Selection.Delete Shift:=xlUp
'---- Tabelle unten grau "schließen" -----'
Range("K22:O22").Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
'------------ Cursor ins Home ---------------'
Range("A2").Select
End Sub


Private Sub Suchen_Click()
Dim i As Integer      '------- Variable i -> 1. Zeile in Ausgabetabelle --------'
Dim x As Integer      '------- Variable x -> Kontrollvariable ob durchsuchte Zeile auch Eintrag besitzt --------'
'------------ Variablen bestimmen ---------------'
i = 12      '------- Variable i -> 1. Zeile in Ausgabetabelle --------'
x = 0       '------- Variable x -> Kontrollvariable ob durchsuchte Zeile auch Eintrag besitzt --------'
'------------ Eingabenkontrolle und ggf. MsgBox ---------------'
If Range("M5") = 0 Or Range("M7") = 0 Then
MsgBox " Bitte kontrollieren Sie Ihre Eingaben für den Zeitraum des Gemeindebriefes", _
48, " Fehler! "
End If
If Range("M9") = 0 Then
MsgBox " Bitte kontrollieren Sie Ihre Eingabe des Mindesalters", _
48, " Fehler! "
End If
'------------ Auswertung beginnen ---------------'
If Range("M5") <> 0 And Range("M7") <> 0 And Range("M9") <> 0 Then
For n = 2 To 600 Step 1
If Range("A" & n) <> 0 Then     '------------ Suchfunktion in Basistabelle -> beginnt bei Zeile 2 ---------------'
x = 1
End If
If Range("M6") <= Range("J" & n) And Range("J" & n) <= Range("M8") And Range("F" & n) >= Range("M9") - 1 And x = 1 Then
ActiveWorkbook.Sheets(1).Range("L" & i) = ActiveWorkbook.Sheets(1).Range("A" & n)
ActiveWorkbook.Sheets(1).Range("N" & i) = ActiveWorkbook.Sheets(1).Range("F" & n) + 1
i = i + 1
x = 0
End If
Next n
End If
'------------ Formatierung ---------------'
Range("K12:O12").Select
Selection.Copy
Range("K13:O" & i - 1).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("K" & i & ":O" & i).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
End With
'------------ Sortierung ---------------'
Range("L12:N600").Select
Selection.Sort Key1:=Range("N12"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'------------ Cursor ins Home ---------------'
Range("A2").Select
End Sub

Anzeige
AW: Wer hat in bestimmtem Zeitraum Geburtstag
11.12.2005 18:18:25
volker
hallo
um das problem des geburtsjahres zu lösen , lass es doch einfach weg
vergleiche nur monat und jahr zB:

Sub gebdat()
von_mt = DatePart("m", Cells(5, 8)) * 100 + DatePart("d", Cells(5, 8))
bis_mt = DatePart("m", Cells(7, 8)) * 100 + DatePart("d", Cells(7, 8))
For x = 2 To 5
geb_mt = DatePart("m", Cells(x, 5)) * 100 + DatePart("d", Cells(x, 5))
If von_mt <= geb_mt And bis_mt >= geb_mt Then MsgBox (Cells(x, 1))
Next x
End Sub

_mt heißt monatTag
gruß volker.
Anzeige
AW: Wer hat in bestimmtem Zeitraum Geburtstag
11.12.2005 19:03:24
Florian
Problem ist nur, dass dann das Alter, welches in der Basis-Tabelle automatisch berechnet wird nicht mehr angageben werden kann. Außerdem ist das Alter bestandteil der Ausgabetabelle...
AW: Wer hat in bestimmtem Zeitraum Geburtstag
11.12.2005 19:21:47
volker
hallo,
sorry da haben wir uns falsch verstanden .
du kannst das geburtsjahr und somit auch das alter in deiner tabelle lassen,
nur der vba cod benutzt nur monat und tag durch datepart.
mfg Volker.
Anzeige
AW: Wer hat in bestimmtem Zeitraum Geburtstag
12.12.2005 00:59:18
FLorian
Vielen Dank für Deine Mühe aber "ransi" hat mich schon auf den richtigen Pfad gebracht.
AW: Wer hat in bestimmtem Zeitraum Geburtstag
12.12.2005 00:59:49
FLorian
Vielen Dank für Deine Mühe aber "ransi" hat mich schon auf den richtigen Pfad gebracht.
MfG
Florian
;
Anzeige
Anzeige

Infobox / Tutorial

Geburtstagsdaten im Excel-Zeitraum abfragen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Tabelle: Stelle sicher, dass deine Excel-Tabelle die Spalten für Namen (A), Geburtstag (E) und Alter (F) enthält. Das Alter soll automatisch berechnet werden.

  2. Eingabefelder erstellen: Lege zwei Zellen (z.B. M5 für das Startdatum und M7 für das Enddatum) an, um den Zeitraum festzulegen. Füge eine Zelle (M9) hinzu, um das Mindestalter anzugeben.

  3. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen und füge ein neues Modul hinzu.

  4. VBA-Skript einfügen: Kopiere das folgende Skript in das Modul:

    Private Sub Suchen_Click()
       Dim i As Integer
       Dim x As Integer
       i = 12
       x = 0
    
       If Range("M5") = 0 Or Range("M7") = 0 Then
           MsgBox "Bitte kontrollieren Sie Ihre Eingaben für den Zeitraum.", 48, "Fehler!"
           Exit Sub
       End If
    
       If Range("M9") = 0 Then
           MsgBox "Bitte kontrollieren Sie Ihre Eingabe des Mindestalters.", 48, "Fehler!"
           Exit Sub
       End If
    
       For n = 2 To 600
           If Range("M5") <= Range("E" & n) And Range("E" & n) <= Range("M7") And Range("F" & n) >= Range("M9") - 1 Then
               ActiveWorkbook.Sheets(1).Range("L" & i) = ActiveWorkbook.Sheets(1).Range("A" & n)
               ActiveWorkbook.Sheets(1).Range("N" & i) = ActiveWorkbook.Sheets(1).Range("F" & n) + 1
               i = i + 1
           End If
       Next n
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu deiner Tabelle. Erstelle einen Button, um das Makro Suchen_Click auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Bitte kontrollieren Sie Ihre Eingaben..."

    • Lösung: Überprüfe, ob du in den Zellen M5, M7 oder M9 valide Daten eingegeben hast. Die Zellen dürfen nicht leer sein.
  • Fehler: Keine Ergebnisse angezeigt

    • Lösung: Stelle sicher, dass die Daten in Spalte E (Geburtstag) die richtige Datumsform haben und innerhalb des definierten Zeitraums liegen.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch Formeln nutzen:

  • Verwende die WENN()-Funktion kombiniert mit UND(), um die Bedingungen für den Zeitraum und das Mindestalter zu prüfen.
=WENN(UND(E2>=M5; E2<=M7; F2>=M9); A2; "")

Diese Formel gibt den Namen zurück, wenn die Bedingungen erfüllt sind. Du kannst diese Formel in einer Hilfsspalte verwenden und die Ergebnisse dann filtern.


Praktische Beispiele

Nehmen wir an, du hast folgende Daten:

Name Geburtstag Alter
Max 15.05.1990 33
Lisa 10.07.1992 31
Tom 22.12.1985 37

Um herauszufinden, wer zwischen dem 01.05. und dem 30.07. Geburtstag hat und mindestens 30 Jahre alt ist, gibst du in M5 01.05.2023, in M7 30.07.2023 und in M9 30 ein und führst das Makro aus.


Tipps für Profis

  • Geburtstagskalender erstellen: Du kannst die Ergebnisse in einem geburtstagskalender a3 formatieren, um eine visuelle Übersicht zu erhalten.

  • Koordinaten für Geburtsdatum berechnen: Wenn du die Geburtsdaten in einer anderen Zeitzone benötigst, könntest du die DATEPART()-Funktion verwenden, um den Monat und den Tag zu extrahieren.


FAQ: Häufige Fragen

1. Wie kann ich das Alter automatisch berechnen? Du kannst die DATEDIF()-Funktion verwenden, um das Alter basierend auf dem Geburtsdatum zu berechnen.

2. Kann ich die Daten für eine bestimmte Gruppe filtern? Ja, du kannst Filter in Excel verwenden, um nur die relevanten Daten anzuzeigen, die du für deine Auswertung benötigst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige