Risultati da 1 a 5 di 5

Discussione: Formula individua giorno festivo



  1. #1
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0

    Formula individua giorno festivo

    Buongiorno e ben ritrovati,
    mi necessita individuare una formula (per esempio in B1) che mi indica se la data inserita (per esempio in A1) è un giorno festivo o feriale.

    Ho cercato qualcosa sul web ma tutte le soluzioni per ora trovate mi richiedono di definire in prima persona quali siano i giorni festivi e quali non (Nel caso assegnando il nome "feste" a tali date).

    Sperando che come al solito anche questa volta avete la soluzione,
    vi saluto, SJoe.

  2. #2
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    820
    Versione Office
    2016 64bit
    Likes ricevuti
    148
    Likes dati
    55
    Non potrai mai avere una soluzione diversa da quanto hai già trovato in rete. Ogni nazione o anche comune (es. Santo Patrono) hanno festività diverse, per cui, a parte il sabato e la domenica (per alcune nazioni) che sono facilmente rilevabili in base alla numerazione assegnata per convenzione ai giorni della settimana (1-7) tutte le altre (alcune sono fisse, altre sono calcolabili (es. Pasqua)) vanno immesse in un apposito elenco da consultare.

  3. #3

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2811
    Versione Office
    Excel 2013
    Likes ricevuti
    1022
    Likes dati
    979
    Oltre il suggerimento di rollis13 (che saluto) c'è la soluzione VBA ma sempre con le festività in un elenco (matrice) da scansionare.

    Inviato dal mio GT-I9301I utilizzando Tapatalk

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2811
    Versione Office
    Excel 2013
    Likes ricevuti
    1022
    Likes dati
    979
    Ecco la variante con VBA
    Codice: 
    Option Explicit
    
    
    Function IndiceDove(Dato, Vettore) As Integer
    Dim i As Integer
    For i = UBound(Vettore) To 0 Step -1
        If Dato >= Vettore(i) Then Exit For
    Next
    IndiceDove = i
    End Function
    
    
    Function DataDiPasqua(Anno As Integer) As Date
    Dim a As Integer, b As Integer, C As Integer, d As Integer, e As Integer
    Dim Anni, M, Q, ind As Integer
    Anni = Array(1583, 1700, 1800, 1900, 2100, 2200, 2300, 2400)
    M = Array(22, 23, 23, 24, 24, 25, 26, 25)
    Q = Array(2, 3, 4, 5, 6, 0, 1, 1)
    ind = IndiceDove(Anno, Anni)
    a = Anno Mod 19
    b = Anno Mod 4
    C = Anno Mod 7
    d = (19 * a + M(ind)) Mod 30
    e = (2 * b + 4 * C + 6 * d + Q(ind)) Mod 7
    Dim didimar As Integer, MesePasq As Integer, GiorPasq As Integer
    didimar = 22 + d + e
    If didimar > 31 Then
    MesePasq = 4
    GiorPasq = didimar - 31
    Else
    MesePasq = 3
    GiorPasq = didimar
    End If
    DataDiPasqua = DateSerial(Anno, MesePasq, GiorPasq)
    End Function
    
    
    Function IsSpecialDate(InputDate As Variant) As Boolean
    Dim i As Integer, tDate As Long, InputYear As Integer
    Dim Festivita(12)
    
    
    Festivita(0) = DateSerial(Year(Date), 1, 1) 'capodanno
    Festivita(1) = DateSerial(Year(Date), 1, 6) 'epifania
    Festivita(2) = DateSerial(Year(Date), 4, 25) 'liberazione
    Festivita(3) = DateSerial(Year(Date), 5, 1) 'festa del lavoro
    Festivita(4) = DataDiPasqua(Year(Date))   'pasqua
    Festivita(5) = Festivita(4) + 1 'lunedi di pasquetta
    Festivita(6) = DateSerial(Year(Date), 6, 2) 'festa repubblica
    Festivita(7) = DateSerial(Year(Date), 8, 15) 'ferragosto
    Festivita(8) = DateSerial(Year(Date), 11, 1) 'ognisanti
    Festivita(9) = DateSerial(Year(Date), 12, 8) 'immacolata
    Festivita(10) = DateSerial(Year(Date), 12, 25) 'natale
    Festivita(11) = DateSerial(Year(Date), 12, 26) 'santo Stefano
    Festivita(12) = DateSerial(Year(Date), 2, 12) 'santo patrono
    
    
    IsSpecialDate = False
    tDate = CDate(DateSerial(Year(InputDate), Month(InputDate), Day(InputDate)))
    If tDate < 1 Then Exit Function
    InputYear = Year(tDate)
    If InputYear < 1900 Then Exit Function
    
    
        i = 0
        Do While i < 13 And IsSpecialDate = False
            If tDate = CLng(Festivita(i)) Then
                IsSpecialDate = True
                Exit Function
            End If
            i = i + 1
        Loop
    End Function
    la funzione IsSpecialDate ti indica se la data è festiva poi con Giorno.Settimana ti estrai i Sabato e Domenica.
    P.S. Modifica il Santo Patrono della tua città

  5. I seguenti utenti hanno dato un "Like"


  6. #5
    L'avatar di Sasyjoe
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Italy
    Età
    27
    Messaggi
    45
    Versione Office
    EXCEL 2010
    Likes ricevuti
    2
    Likes dati
    0
    Grazie.
    Non era proprio quello che cercavo ma, apprendendo quanto avete esposto, mi adatteró.

    Ciao ragazzi.
    Sjoe

Discussioni Simili

  1. Calcolo straordinario feriale/diurno festivo notturno festivo
    Di ombra68 nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 17/02/17, 23:41
  2. Formula giorno della settimana
    Di Bruno nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 12/02/17, 02:45
  3. [Risolto] Estrarre da testo giorno, mese e giorno settimana.
    Di alfrimpa nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 20/12/16, 17:39
  4. usare funzione "giorno lavorativo" con frazioni di giorno
    Di CaesarIII nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 25/09/16, 00:23
  5. Salvare i dati di un giorno sotto la colonna dello stesso giorno.
    Di Laura Belli nel forum Domande su Excel VBA e MACRO
    Risposte: 12
    Ultimo Messaggio: 26/08/16, 08:51

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •