Quando si sviluppa un foglio di lavoro per tenere traccia delle informazioni aziendali, potrebbe essere necessario determinare tutti i venerdì in un intervallo di date. Il modo migliore per farlo dipende dai dati nel foglio di lavoro e dal modo in cui desideri visualizzare i risultati.

Se si dispone di un elenco di date in una colonna, è possibile utilizzare diverse funzioni del foglio di lavoro per determinare se tali date sono venerdì o meno.

La funzione WEEKDAY restituisce un numero, da 1 a 7, a seconda del giorno della settimana della data utilizzata come argomento:

=WEEKDAY(A2)

Questo utilizzo restituisce il numero 6 se la data in A2 è un venerdì. Se questa formula viene copiata accanto a una colonna di date, è possibile utilizzare la funzione Filtro automatico di Excel per mostrare solo le date in cui il giorno della settimana è 6 (venerdì).

È inoltre possibile utilizzare la funzionalità di formattazione condizionale di Excel per evidenziare semplicemente tutti i venerdì in un elenco di date. Segui questi passaggi:

  1. Seleziona l’elenco delle date.

  2. Scegli Formattazione condizionale dal menu Formato. Excel visualizza la finestra di dialogo Formattazione condizionale.

  3. Utilizza il menu a discesa Condizione per scegliere La formula è. (Vedi figura 1.)

  4. Nell’area della formula, a destra dell’elenco a discesa utilizzato nel passaggio 3, immettere la seguente formula, sostituendo A2 con l’indirizzo della cella attiva selezionata nel passaggio 1:

  5. Fare clic su Formato per visualizzare la finestra di dialogo Formato celle.

  6. Impostare le opzioni di formattazione per evidenziare i venerdì come desiderato.

  7. Fare clic su OK per chiudere la finestra di dialogo Formato celle. La formattazione specificata nel passaggio 6 dovrebbe ora essere visualizzata nell’area di anteprima per la condizione.

  8. Fare clic su OK.

Se vuoi determinare una serie di venerdì sulla base di una data di inizio e di fine, puoi impostare una serie di formule per capirli.

Supponendo che la data di inizio sia in A2 e la data di fine sia in A3, puoi usare la seguente formula per calcolare la data del primo venerdì:

=IF(A2+IF(WEEKDAY(A2)<=6,6-WEEKDAY(A2),6)>A3, "",A2+IF(WEEKDAY(A2)<=6,6-WEEKDAY(A2),6))

Se inserisci questa formula nella cella C2 e poi la formatti come una data, puoi utilizzare la seguente formula per determinare il prossimo venerdì nell’intervallo:

=IF(C2="","",IF(C2+7>$A$3,"",C2+7))

Se copi questa formula per un gruppo di celle, ti ritroverai con un elenco di venerdì tra qualsiasi intervallo di date specificato da A2 e A3.

Se in realtà desideri “estrarre” i venerdì in un intervallo di date specifico, dovrai utilizzare una macro. Ci sono diversi modi per farlo. Questa semplice macro esaminerà tutte le date nell’intervallo A2: A24.

Se sono venerdì, la data viene copiata nella colonna C, a partire da C2. Il risultato, ovviamente, è che l’elenco che inizia da C2 conterrà solo date che sono venerdì.

Sub PullFridays1()

Dim dat As Range     Dim c As Range     Dim rw As Integer

Set dat = ActiveSheet.Range("A2:A24")

rw = 2     For Each c In dat         If Weekday(c) = vbFriday Then             Cells(rw, 3).Value = Format(c)

rw = rw + 1         End If     Next End Sub

Volendo si può cambiare l’intervallo esaminato dalla macro semplicemente cambiando il riferimento A2: A24, e si può cambiare dove sono scritte le date cambiando il valore di rw (la riga) e il valore 3 (la colonna) nella Funzione delle cellule.

Se preferisci lavorare con una data di inizio e una di fine, puoi modificare la macro in modo che passi attraverso le date. La seguente macro presuppone che la data di inizio si trovi nella cella A2 e la data di fine si trovi nella cella A3.

Sub PullFridays2()

Dim dStart As Date     Dim dEnd As Date     Dim rw As Integer

dStart = Range("A2").Value     dEnd = Range("A3").Value

rw = 2     While dStart < dEnd         If Weekday(dStart) = vbFriday Then             Cells(rw, 3).Value = dStart             Cells(rw, 3).NumberFormat = "m/d/yyyy"

rw = rw + 1         End If         dStart = dStart + 1     Wend End Sub

La macro estrae ancora i venerdì dall’intervallo e li inserisce in un elenco che inizia da C2.

Un altro approccio macro consiste nel creare una funzione definita dall’utente che restituisca venerdì specifici all’interno di un intervallo. Il seguente fa proprio questo:

Function PullFridays3(dStartDate As Date, _                       dEndDate As Date, _                       iIndex As Integer)

Dim iMaxDays As Integer     Dim dFirstday As Date

Application.Volatile     If dStartDate > dEndDate Then         PullFridays3 = CVErr(xlErrNum)

Exit Function     End If

dFirstday = vbFriday - Weekday(dStartDate) + dStartDate     If dFirstday < dStartDate Then dFirstday = dFirstday + 7     iMaxDays = Int((dEndDate - dFirstday) / 7) + 1

PullFridays3 = ""

If iIndex = 0 Then         PullFridays3 = iMaxDays     ElseIf iIndex <= iMaxDays Then         PullFridays3 = dFirstday + (iIndex - 1) * 7     End If End Function

Puoi utilizzare questa funzione in una cella del tuo foglio di lavoro nel modo seguente:

=PULLFRIDAYS3(A2,A3,1)

Il primo argomento per la funzione è la data di inizio e il secondo è la data di fine. Il terzo argomento indica quale venerdì si desidera venga restituito dall’intervallo specificato. Se usi 1, ottieni il primo venerdì, 2 restituisce il secondo venerdì, ecc. Se usi uno 0 per il terzo argomento, la funzione restituisce il numero di venerdì nell’intervallo specificato. Se la data di inizio specificata è maggiore della data di fine, la funzione restituisce un errore #NUM.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (2930) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: