Un saluto al forum.
Ho necessità, con macro, di confrontare se un determinato periodo, definito da data inizio e data fine, si sovrappone ad altri periodi esistenti, sempre definiti da data inizio e data fine. La verifica dovrà avvenire tra il periodo da verificare e tutti i periodi esistenti.
-Periodi di irrigazione esistenti
dal 10/05/2023 al 15/06/2023
dal 25/08/2023 al 02/09/2023
dal 15/10/2023 al 22/10/2023
- Periodi di irrigazione da verificare
1) dal 02/05/2023 al 09/05/2023 -> risultato verifica = Vero (il periodo di irrigazione non si sovrappone con alcuno dei periodi di irrigazione esistenti)
2) dal 01/05/2023 al 10/05/2023 -> risultato verifica = Falso (la data di fine irrigazione coincide con una data di inizio irrigazione esistente)
3) dal 02/09/2023 al 12/09/2023 -> risultato verifica = Falso (la data di inizio irrigazione coincide con una data di fine irrigazione esistente)
4) dal 03/09/2023 al 13/09/2023 -> risultato verifica = Vero (il periodo di irrigazione non si sovrappone con alcuno dei periodi di irrigazione esistenti)
5) dal 05/10/2023 al 24/10/2023 -> risultato verifica = Falso (il periodo di irrigazione si sovrappone con un periodo di irrigazione esistente)
6) dal 28/08/2023 al 30/08/2023 -> risultato verifica = Falso (il periodo di irrigazione si sovrappone con un periodo di irrigazione esistente)
Allego file con stesse casistiche.
Saluti
Geo
[Risolto] Confronto intervalli date
[Risolto] Confronto intervalli date
- Allegati
-
- VerificaPeriodoIrrigazione.ods
- (14.79 KiB) Scaricato 32 volte
Ultima modifica di geovign il mercoledì 24 aprile 2024, 14:15, modificato 1 volta in totale.
LibO v.24 su Manjaro
Re: Confronto intervalli date
Ciao, ti segnalo questo argomento: https://forum.openoffice.org/it/forum/v ... php?t=9780, risolto sia con macro che senza.
Non coincide con la tua richiesta ma contiene elementi comuni che potrebbero servire per arrivare ad una soluzione.
Non coincide con la tua richiesta ma contiene elementi comuni che potrebbero servire per arrivare ad una soluzione.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Confronto intervalli date
Ciao @charlie,
letto l'argomento, provato a ragionare sulle macro scritte ... e risolto.
Non ho idea se è la soluzione giusta, ma è una soluzione e direi che funziona.
Nel file che allego, ho creato una funzione alla quale vengono passate le due date (inizio e fine periodo) prelevate dalle celle.
Trasformo tutte le date in numero in modo tale da poterli utilizzare come indici in un ciclo for/next e confrontarle.
Saluti
Geo
letto l'argomento, provato a ragionare sulle macro scritte ... e risolto.
Non ho idea se è la soluzione giusta, ma è una soluzione e direi che funziona.
Nel file che allego, ho creato una funzione alla quale vengono passate le due date (inizio e fine periodo) prelevate dalle celle.
Trasformo tutte le date in numero in modo tale da poterli utilizzare come indici in un ciclo for/next e confrontarle.
Codice: Seleziona tutto
Function VerificaPeriodi(DataInizioDaVerificare As Date, DataFineDaVerificare As Date) As Boolean
'dati passati alla funzione: data inizio irrigazione e data fine irrigazione del periodo da verificare
dim NumeroDataInizioRiferimento As Long
Dim NumeroDataFineRiferimento As Long
Dim NumeroDataInizioDaVerificare As Long
Dim NumeroDataFineDaVerificare As Long
Dim i riga As Long
Dim nData As long
'trasformo la data in un numero (ogni data ha un numero sempre diverso)
NumeroDataInizioDaVerificare = CLng(DataInizioDaVerificare)
NumeroDataFineDaVerificare = CLng(DataFineDaVerificare)
'primo ciclo: determino i numeri associati alle date di inizio e fine periodi esistenti
For iRiga = 6 To 8
'ottengo direttamente un numero associato alla data
NumeroDataInizioRiferimento = ThisComponent.Sheets(0).getCellByPosition(0,iRiga).value
NumeroDataFineRiferimento = ThisComponent.Sheets(0).getCellByPosition(1,iRiga).value
'secondo ciclo di confronto fra date (numero trasformato da date); uso come indice il numero associato alla data
For nData = NumeroDataInizioDaVerificare To NumeroDataFineDaVerificare
If nData>=NumeroDataInizioRiferimento And nData<=NumeroDataFineRiferimento Then
VerificaPeriodi = False
Exit Function
End If
Next nData
Next iRiga
VerificaPeriodi = True
End Function
Geo
- Allegati
-
- VerificaPeriodoIrrigazione2.ods
- (16.99 KiB) Scaricato 33 volte
LibO v.24 su Manjaro