Tirando tutti i venerdì (Microsoft Excel)
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 GIORNO.SETTIMANA restituisce un numero, compreso tra 1 e 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:
-
Seleziona l’elenco delle date.
-
Assicurati che la scheda Home della barra multifunzione sia visualizzata.
-
Fare clic sullo strumento Formattazione condizionale nel gruppo Stili. Excel mostra una serie di scelte.
-
Fare clic su Nuova regola. Excel visualizza la finestra di dialogo Nuova regola di formattazione.
(Vedi figura 1.)
-
Nell’area Seleziona un tipo di regola nella parte superiore della finestra di dialogo, scegli Usa una formula per determinare quali celle formattare. (Vedi figura 2.)
-
Nell’area della formula immettere la seguente formula, sostituendo A2 con l’indirizzo della cella attiva selezionata nel passaggio 1: = GIORNO.SETTIMANA (A2) = 6. Fare clic su Formato per visualizzare la finestra di dialogo Formato celle.
-
Impostare le opzioni di formattazione per evidenziare i venerdì come desiderato.
-
Fare clic su OK per chiudere la finestra di dialogo Formato celle.
-
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 sia 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 il venerdì che 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 (8147) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: