Seite 1 von 1

Erster Geburtstag im Kalenderjahr

Verfasst: Fr 1. Aug 2025, 14:01
von RPP63
Moin!
Gegeben ist eine Liste mit Geburtsdaten (Plural von Datum):

Code: Alles auswählen

GebDat
15.10.2015
10.08.1975
05.07.1978
02.10.2022
03.03.2022
02.05.1989
20.01.2003
10.02.1992
26.10.1989
22.03.1999
Ich möchte jetzt wissen, welches Geburtsdatum als erster Geburtstag im Kalenderjahr liegt.
(hier wäre es der 20.01.2003)

In Excel erreiche ich dies mit

Code: Alles auswählen

=INDEX(SORTIERENNACH(A2:A11;TEXT(A2:A11;"MMTT"));1)
Die gleiche Formel in Calc wirft den Fehler 504 aus.
Wohlgemerkt:
=SORTIERENNACH(A2:A11;TEXT(A2:A11;"MMTT") liefert in Calc eine korrekt sortierte Geburtstags-Liste (und wird automatisch als Matrixformel erkannt).
Wieso kann ich auf diesen Vektor nicht mittels INDEX() zugreifen?

Update:
Ich habe tatsächlich eine Lösung gefunden, die mir aber nicht wirklich logisch erscheint.
Vielleicht hat ja außer mir jemand Spaß an dieser Knobelaufgabe?

Gruß Ralf

Re: Erster Geburtstag im Kalenderjahr

Verfasst: Fr 1. Aug 2025, 14:51
von karolus
Hallo

Bei mir funktioniert die Formel wie gewünscht!

Code: Alles auswählen

{=INDEX(SORTBY(A$2:A$11;TEXT(A$2:A$11;"MM-TT"));1)} # englische Funktionnamen

Code: Alles auswählen

Version: 25.2.5.2 (AARCH64) / LibreOffice Community
Build ID: 03d19516eb2e1dd5d4ccd751a0d6f35f35e08022
CPU threads: 4; OS: Linux 6.12; UI render: default; VCL: gtk3
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Flatpak
Calc: threaded

Re: Erster Geburtstag im Kalenderjahr

Verfasst: Fr 1. Aug 2025, 16:03
von RPP63
Meine Version ist etwas älter:

Code: Alles auswählen

Version: 25.2.4.3 (X86_64) / LibreOffice Community
Build ID: 33e196637044ead23f5c3226cde09b47731f7e27
CPU threads: 12; OS: Windows 11 X86_64 (10.0 build 26100); UI render: default; VCL: win
Locale: de-DE (de_DE); UI: de-DE
Calc: CL threaded
Ich aktualisiere mal schnell auf die 25.2.5 …

Re: Erster Geburtstag im Kalenderjahr

Verfasst: Fr 1. Aug 2025, 16:17
von RPP63
Ich habe jetzt auch die 25.2.5.2
Und tatsächlich, jetzt funktioniert
{=INDEX(SORTIERENNACH(A2:A11;TEXT(A2:A11;"MMTT"));1)}

Ich will aber kurz aufklären, was ich in der älteren Version gemacht habe:
=INDEX(MTRANS(SORTIERENNACH(A2:A11;TEXT(A2:A11;"MMTT")));;1)
(ohne Matrixabschluss!)

Das kenne ich eher aus VBA.
Dort muss ich einen "echten" eindimensionalen Vektor mittels doppeltem MTRANS in einen "eindimensionalen Bereich" umwandeln.

Aber: vielen Dank fürs Testen!

Gruß Ralf

Re: Erster Geburtstag im Kalenderjahr

Verfasst: Fr 1. Aug 2025, 17:58
von karolus
Hallo

VBA geht mir ja recht weit am A...h vorbei, in python würde ich etwa so vorgehen:

Code: Alles auswählen

from datetime import datetime as dt, timedelta as delta

EPOCH = dt(1899, 12, 30) #LO-epoche

doc = XSCRIPTCONTEXT.getDocument()
data = doc.CurrentSelection.DataArray
# spalte zu zeile transponieren und 1. Zeile rausholen
lo_dates = list(zip(*data))[0] 
# LO-fliesskommazahlen in python-Datums-objekte umwandeln
py_dates = [EPOCH + delta(days=entry) for entry in lo_dates] 
first = min(py_dates, key=lambda x: (x.month, x.day))
print(f"{first = :%Y-%m-%d}")

Re: Erster Geburtstag im Kalenderjahr

Verfasst: So 10. Aug 2025, 10:22
von RPP63
gelöscht, ich mache einen neuen Thread.