1k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo in die Runde,

ich habe eine Tabelle, die mich schier wahnsinnig macht ;-) und
hoffe, dass mir jemand dabei behilflich sein kann.

Ich habe eine Tabelle, die grundlegend folgendermaßen aufgebaut
ist:

Name | Geburtsdatum (TT MM YYYY) | Todesdatum (TT MM YYYY)

Nun möchte ich, dass die Tabelle so sortiert ist, dass mir an jedem
Tag des Jahres angezeigt ist, wer geboren und wer gestorben ist,
also was ist zum Beispiel alles am 01.01. passiert, was am 02.01.
und so weiter (Wer ist am 01.01. geboren und dann wer ist am 01.01.
gestorben, dann wer ist am 02.01. geboren und dann wer ist am
02.01. gestorben)
Dabei gibt es noch folgende zwei Hürden:
- Es sind nicht alle Daten für jede Zeile vorhanden, bei manchen
Personen ist das Geburtsdatum nicht bekannt, andere leben
beispielsweise noch. Deswegen kommt eine Pivot-Tabelle nicht in
Frage (das Gruppieren ist nicht möglich), die eigentlich ein gutes
Mittel wäre.
- Die Daten liegen zu einem großen Teil vor 1900, ich musste also
das Add-Ins "xdate" einsetzen.

Hat jemand eine Idee, wie ich das lösen könnte?

Viele Grüße
chriseil

19 Antworten

0 Punkte
Beantwortet von
Hallo Chriseil,

mit Access kann ich es mir so vorstellen:

Tabelle:
Feld 1 Name> Felddatentyp Text
Feld 2 geboren> Felddatentyp Datum/Uhrzeit
Feld 3 gestorben> Felddatentyp Datum/Uhrzeit

erstelle eine Abfrage aus obiger Tabelle:

in der Entwurfsansicht unter Kriterien gib folgende Verknüpfung ein:

Name
Wie "*" & [SUCHE] & "*"

ein Zeile darunter geboren:
Wie "*" & [SUCHE] & "*"

und wieder eine Zeile darunter
Wie "*" & [SUCHE] & "*"

Beim Öffnen der Abfrage wird der Parameterwert (Datum oder auch Namen) verlangt, es erscheinen dann alle gestorbenen und geborenen Personen aufgelistet.

Gruß
Paul1
0 Punkte
Beantwortet von
Lieber paul1,

ich habe wieder stundenlang probiert, aber es will einfach nicht :-/ Und ich muss sagen, dass
eine Datenbanklösung eigentlich auch für mich nicht so ganz praktikabel ist, denn wie in
diesem Screenshot zu sehen
">https://www.dropbox.com/s/0uvatk1zpwi2u85/ScreenshotTabelle_Kalender.JPG?dl=0
, liegt der Sinn der Tabelle für mich darin, zu sehen, welche runden und halbrunden
Geburtstage bzw. Todestage zum jeweiligen Datum anstehen. In Access funktionierte diese
Formel nicht ...

Vielleicht kann Nighty ja mit der Excel-Lösung nochmal weiterhelfen :-)

Hätte ich ja nie gedacht, dass das mit der Tabelle so kompliziert werden könnte ...

Viele Grüße
chriseil
0 Punkte
Beantwortet von
Hallo Community und chriseil .-)

Ok ... Wollt nur abwarten wie sich die Dinge entwickeln .-)

Der Auto Filter wird übrigens entlassen oder besser noch ,wir begraben Ihn unter einer Pyramide *g*

Mit 2 Datumsspalten zickt der nur rum!

Ich mach es nun über ein Array ,übers Wochenende Fertig !

Die Problematik war die Wechselwirkung der Filterung bei 2 Spalten,nicht die leeren Zellen

Gruss Nighty
0 Punkte
Beantwortet von
Hallo Community .-)

Gültiges Datum,Jahr 0 bis Heute
Aktuelles Tagesdatum mit Aktuellen Monatsdatum mit Jahr X werden angezeigt
Zwar auch mit Autofilter,aber die Daten sind aufbereitet!
1 Hilfsspalte wird genutzt und ist immer die letzte Spalte
Genutzte Bereich wird als Datum Formatiert nach DD MM JJJJ
Genutzte Bereich wird rechtsbündig Formatiert

Gruß Nighty

Sub DatumFilter()
Dim DatenDatum As Variant
Dim ZeilenIndex As Long
If ActiveSheet.AutoFilterMode = False Then
Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 2)).NumberFormat = "dd/mm/yyyy"
Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 2)).HorizontalAlignment = xlRight
DatenDatum = Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 2))
For ZeilenIndex = 1 To UBound(DatenDatum, 1)
If Day(Date) = Day(DatenDatum(ZeilenIndex, 1)) And Month(Date) = Month(DatenDatum(ZeilenIndex, 1)) Or Day(Date) = Day(DatenDatum(ZeilenIndex, 2)) And Month(Date) = Month(DatenDatum(ZeilenIndex, 2)) Then Cells(ZeilenIndex + 1, Columns.Count) = True
Next ZeilenIndex
ActiveSheet.Range(Cells(1, Columns.Count), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, Columns.Count)).AutoFilter Field:=1, Criteria1:=True
Else
ActiveSheet.Cells(1, Columns.Count).AutoFilter
Columns(Columns.Count).Clear
End If
End Sub
0 Punkte
Beantwortet von
Hallo Community .-)

Das Makro arbeitet in Wechselwirkung
bzw wiederholter Start schaltet den Filter wieder aus

Gruss Night
0 Punkte
Beantwortet von
Hallo Commuity .-)

Sollte die Anzahl der Datumswerte 5-6 stellig sein,könnte ich es noch beschleunigen!

Gruß Nighty
0 Punkte
Beantwortet von
Hallo Community

Bisl beschleunigt!

Spalte A + B sind Datumswerte

Gruss Nighty

Sub DatumFilter()
Dim DatenDatum As Variant, Puffer As Variant
Dim ZeilenIndex As Long
If ActiveSheet.AutoFilterMode = False Then
Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 2)).NumberFormat = "dd/mm/yyyy"
Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 2)).HorizontalAlignment = xlRight
DatenDatum = Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 2))
Puffer = Range(Cells(2, 1), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, 1))
For ZeilenIndex = 1 To UBound(DatenDatum, 1)
If Day(Date) = Day(DatenDatum(ZeilenIndex, 1)) And Month(Date) = Month(DatenDatum(ZeilenIndex, 1)) Or Day(Date) = Day(DatenDatum(ZeilenIndex, 2)) And Month(Date) = Month(DatenDatum(ZeilenIndex, 2)) Then Puffer(ZeilenIndex, 1) = True
Next ZeilenIndex
Range(Cells(2, Columns.Count), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, Columns.Count)) = Puffer
ActiveSheet.Range(Cells(1, Columns.Count), Cells(ActiveSheet.Range(Cells(Rows.Count, 1), Cells(Rows.Count, 1)).End(xlUp).Row, Columns.Count)).AutoFilter Field:=1, Criteria1:=True
Else
ActiveSheet.Cells(1, Columns.Count).AutoFilter
Columns(Columns.Count).Clear
End If
End Sub
0 Punkte
Beantwortet von
Lieber Nighty,

ich bekomme es einfach nicht hin, irgendetwas scheine ich falsch zu machen :-(

Ob du mir mal eine Beispieltabelle hochladen könntest?

Viele Grüße
chriseil
0 Punkte
Beantwortet von
Hallo chriseil .-)

Datumswerte sind nun Spalte B+C,hatte ich wohl vergessen

Einzufügen
Alt+F11/Projektexplorer/Allgemeines Modul

Gruß Nighty

Sub DatumFilter()
Dim DatenDatum As Variant, Puffer As Variant
Dim ZeilenIndex As Long
If ActiveSheet.AutoFilterMode = False Then
Range(Cells(2, 2), Cells(ActiveSheet.Range(Cells(Rows.Count, 2), Cells(Rows.Count, 2)).End(xlUp).Row, 3)).NumberFormat = "dd/mm/yyyy"
Range(Cells(2, 2), Cells(ActiveSheet.Range(Cells(Rows.Count, 2), Cells(Rows.Count, 2)).End(xlUp).Row, 3)).HorizontalAlignment = xlRight
DatenDatum = Range(Cells(2, 2), Cells(ActiveSheet.Range(Cells(Rows.Count, 2), Cells(Rows.Count, 2)).End(xlUp).Row, 3))
Puffer = Range(Cells(2, 2), Cells(ActiveSheet.Range(Cells(Rows.Count, 2), Cells(Rows.Count, 2)).End(xlUp).Row, 3))
For ZeilenIndex = 1 To UBound(DatenDatum, 1)
If Day(Date) = Day(DatenDatum(ZeilenIndex, 1)) And Month(Date) = Month(DatenDatum(ZeilenIndex, 1)) Or Day(Date) = Day(DatenDatum(ZeilenIndex, 2)) And Month(Date) = Month(DatenDatum(ZeilenIndex, 2)) Then Puffer(ZeilenIndex, 1) = True
Next ZeilenIndex
Range(Cells(2, Columns.Count), Cells(ActiveSheet.Range(Cells(Rows.Count, 2), Cells(Rows.Count, 2)).End(xlUp).Row, Columns.Count)) = Puffer
ActiveSheet.Range(Cells(1, Columns.Count), Cells(ActiveSheet.Range(Cells(Rows.Count, 2), Cells(Rows.Count, 2)).End(xlUp).Row, Columns.Count)).AutoFilter Field:=1, Criteria1:=True
Else
ActiveSheet.Cells(1, Columns.Count).AutoFilter
Columns(Columns.Count).Clear
End If
End Sub
...