❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Erster Geburtstag im Kalenderjahr

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
Benutzeravatar
RPP63
Beiträge: 184
Registriert: Sa 21. Apr 2018, 09:33

Erster Geburtstag im Kalenderjahr

Beitrag von RPP63 » Fr 1. Aug 2025, 14:01

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
Ein Feedback auf eine gegebene Lösung tut nicht weh und zeigt Querlesern, dass das Problem gelöst ist.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2572
Registriert: Fr 10. Dez 2010, 10:01

Re: Erster Geburtstag im Kalenderjahr

Beitrag von karolus » Fr 1. Aug 2025, 14:51

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
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Benutzeravatar
RPP63
Beiträge: 184
Registriert: Sa 21. Apr 2018, 09:33

Re: Erster Geburtstag im Kalenderjahr

Beitrag von RPP63 » Fr 1. Aug 2025, 16:03

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 …
Ein Feedback auf eine gegebene Lösung tut nicht weh und zeigt Querlesern, dass das Problem gelöst ist.

Benutzeravatar
RPP63
Beiträge: 184
Registriert: Sa 21. Apr 2018, 09:33

Re: Erster Geburtstag im Kalenderjahr

Beitrag von RPP63 » Fr 1. Aug 2025, 16:17

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
Ein Feedback auf eine gegebene Lösung tut nicht weh und zeigt Querlesern, dass das Problem gelöst ist.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2572
Registriert: Fr 10. Dez 2010, 10:01

Re: Erster Geburtstag im Kalenderjahr

Beitrag von karolus » Fr 1. Aug 2025, 17:58

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}")
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

Benutzeravatar
RPP63
Beiträge: 184
Registriert: Sa 21. Apr 2018, 09:33

Re: Erster Geburtstag im Kalenderjahr

Beitrag von RPP63 » So 10. Aug 2025, 10:22

gelöscht, ich mache einen neuen Thread.
Ein Feedback auf eine gegebene Lösung tut nicht weh und zeigt Querlesern, dass das Problem gelöst ist.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten