🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

Wiederholungen im Zeitraum prüfen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
StefKe
Beiträge: 68
Registriert: Sa 5. Nov 2022, 18:47

Wiederholungen im Zeitraum prüfen

Beitrag von StefKe » Mo 18. Aug 2025, 09:49

Hallo allerseits, gibt es eine Möglichkeit die Anzahl von Wiederholungen in einem Zeitraum zu ermitteln?
Zum Beispiel:
  • Messung - Beginn: 17.08.2025 14:59:27
    Messung - Ende: 18.08.2025 19:21:00
    erstes Ereignis: 15:00 Uhr
    Wiederholung: alle 6 Stunden
Im obigen Beispiel sollte 5x im Ergebnis stehen.
Mir fehlt grad jeglicher Formelansatz, vermutlich lässt sich das nur als Makro lösen?

Danke - Stefan

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

Re: Wiederholungen im Zeitraum prüfen

Beitrag von karolus » Mo 18. Aug 2025, 13:21

StefKe hat geschrieben:
Mo 18. Aug 2025, 09:49
…vermutlich lässt sich das nur als Makro lösen?

Danke - Stefan
:roll: :roll:

Code: Alles auswählen

=AUFRUNDEN( (ende-anfang)*4 )
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

StefKe
Beiträge: 68
Registriert: Sa 5. Nov 2022, 18:47

Re: Wiederholungen im Zeitraum prüfen

Beitrag von StefKe » Mo 18. Aug 2025, 21:13

Hallo, das trifft es leider nicht - siehe Beispiel:
Bild

Sobald die Summe vor der ersten und der letzten Bewässerungsperiode über 6 Stunden beträgt, ist das Ergebnis leider falsch.
Die Messung in Zeile 8 ist nicht sinnvoll, aber das Ergebnis sollte 0 sein.
Dateianhänge
Unbenannt 1.ods
(15.78 KiB) 333-mal heruntergeladen

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

Re: Wiederholungen im Zeitraum prüfen

Beitrag von karolus » Mo 18. Aug 2025, 22:55

Hallo

Code: Alles auswählen

=LET( a; OBERGRENZE(A6-1/8;1/4)+1/8 ; e; UNTERGRENZE(B6+1/8;1/4)-1/8 ; WENN(e<a ; 0 ; 1+(e-a)*4))
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

StefKe
Beiträge: 68
Registriert: Sa 5. Nov 2022, 18:47

Re: Wiederholungen im Zeitraum prüfen

Beitrag von StefKe » Mi 20. Aug 2025, 10:23

Hallo, bei der Formel streikt Calc -

Code: Alles auswählen

#NAME?
habe das jetzt so gelöst:

Code: Alles auswählen

import datetime as dt

def count_steps():
  start_datetime = "11.08.2025 13:14:45"
  stop_datetime = "12.08.2025 13:19:21"
  start_time = "15:00"
  step = 6 # Dauer zwischen jeder Wiederholung in Stunden
  sum_steps = 0

  start_date = start_datetime[:11]
  start_step = dt.datetime.strptime(f"{start_date} {start_time}","%d.%m.%Y %H:%M")
  stop = dt.datetime.strptime(stop_datetime,"%d.%m.%Y %H:%M:%S")
  delta = dt.timedelta(hours=step)

  while start_step < stop:
    start_step += delta
    sum_steps += 1
    print(start_step)
  print(sum_steps)
  
if __name__ == "__main__":
  count_steps()
passt auch - Danke für Deine Mühe
Stefan

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

Re: Wiederholungen im Zeitraum prüfen

Beitrag von karolus » Mi 20. Aug 2025, 15:55

StefKe hat geschrieben:
Mi 20. Aug 2025, 10:23
Hallo, bei der Formel streikt Calc -

Code: Alles auswählen

#NAME?
das kann jetzt daran liegen:
  • du benutzt eine LO-version vor LO24.8 (da gabs LET noch nicht!)
  • du hast unter Optionen umgeschaltet auf [x]englische Funktionsnamen
StefKe hat geschrieben:
Mi 20. Aug 2025, 10:23
habe das jetzt so gelöst:

Code: Alles auswählen

import datetime as dt

def count_steps():
  start_datetime = "11.08.2025 13:14:45"
  stop_datetime = "12.08.2025 13:19:21"
  start_time = "15:00"
  step = 6 # Dauer zwischen jeder Wiederholung in Stunden
  sum_steps = 0

  start_date = start_datetime[:11]
  start_step = dt.datetime.strptime(f"{start_date} {start_time}","%d.%m.%Y %H:%M")
  stop = dt.datetime.strptime(stop_datetime,"%d.%m.%Y %H:%M:%S")
  delta = dt.timedelta(hours=step)

  while start_step < stop:
    start_step += delta
    sum_steps += 1
    print(start_step)
  print(sum_steps)
  
if __name__ == "__main__":
  count_steps()
passt auch - Danke für Deine Mühe
Stefan
Das funktioniert aber nur für die beiden im Code hart-codierten Daten, das geht schon besser, unter der Voraussetzung das du zuerst den Zellbereich mit den Start- und Enddatum und einer leeren Spalte daneben für die Ergebnisse selektierst

Code: Alles auswählen

from datetime import datetime as dt, timedelta as delta

LO_EPOCH = dt(1899, 12, 30)
SECS_PER_DAY = 24*60*60

def py_date(lo_date):
    lo_date, lo_time = divmod(lo_date, 1) 
    _seconds = lo_time * SECS_PER_DAY
    h_m, _seconds = divmod(_seconds, 60)
    _hours, _minutes = divmod(h_m, 60)
    return LO_EPOCH + delta(days=lo_date, hours=_hours,
                         minutes=_minutes, seconds=_seconds)

def count_events( start, end, events):
    for hour in events:
        if start < (first:=start.replace(hour=hour,minute=0,second=0)):
            first = first
            break
    c = 0
    while first < end:
        first+=delta(hours=6)
        c+=1
    return c    
    
def main():
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    data = sel.DataArray
    dates = [row[:2] for row in data]
    events = [3, 9, 15, 21]
    sel.DataArray = [( a, e, count_events(py_date(a), py_date(e), events))
                     for a, e in dates]
edit: update 26.8.2025 11:00:
ich merke gerade das »timedelta« nicht nur int's verarbeitet sondern auch float's, damit reduziert sich die Umrechnung auf:

Code: Alles auswählen

def py_date(lo_date):
    return LO_EPOCH + delta(days=lo_date)
das ist dann eigentlich zu wenig um dafür ne extra Funktion zu schreiben!
Zuletzt geändert von karolus am Di 26. Aug 2025, 10:42, insgesamt 1-mal geändert.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

StefKe
Beiträge: 68
Registriert: Sa 5. Nov 2022, 18:47

Re: Wiederholungen im Zeitraum prüfen

Beitrag von StefKe » Mo 25. Aug 2025, 09:28

Hallo, danke - läuft :-)
Ich hab das Skript erst mal Schritt für Schritt laufen lassen, um den Ablauf zu verstehen.

PS: die Schreibweise:

Code: Alles auswählen

_datetime
wählst Du, um die Variable von dem reservierten Wort

Code: Alles auswählen

datetime
abzugrenzen?

Stefan

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

Re: Wiederholungen im Zeitraum prüfen

Beitrag von karolus » Mo 25. Aug 2025, 14:29

Hallo

Ich hab nirgends »_datetime« verwendet, was ich verwendet habe sind die lokalen Variablen in der Funktion »py_date« : »_hours«, »_minutes« und »_seconds« um dem Leser zu vermitteln, das ein semantischer Unterschied zu den key-worten in der »delta( … , … , …)« funktion besteht.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten