❤️ 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. 🤗

Wiederholungen im Zeitraum prüfen

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Antworten
StefKe
Beiträge: 67
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: 2569
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: 67
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) 267-mal heruntergeladen

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2569
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: 67
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: 2569
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: 67
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: 2569
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 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