Formula Excel: conta le date per giorno della settimana -

Formula generica

=SUMPRODUCT(--(WEEKDAY(dates)=day_num))

Sommario

Per contare le date per giorno della settimana (cioè contare lunedì, martedì, mercoledì, ecc.), È possibile utilizzare la funzione SUMPRODUCT insieme alla funzione WEEKDAY. Nell'esempio mostrato, la formula in F4 è:

=SUMPRODUCT(--(WEEKDAY(dates,2)=E4))

Nota: "date" è l'intervallo denominato B4: B15.

Spiegazione

Potresti chiederti perché non stiamo utilizzando COUNTIF o COUNTIF? Queste funzioni sembrano la soluzione più ovvia. Tuttavia, senza aggiungere una colonna helper che contiene un valore del giorno della settimana, non è possibile creare un criterio per COUNTIF per contare i giorni della settimana in un intervallo di date.

Invece, usiamo la versatile funzione SUMPRODUCT, che gestisce gli array con grazia senza la necessità di usare Control + Shift + Enter.

Stiamo usando SUMPRODUCT con un solo argomento, che consiste in questa espressione:

--(WEEKDAY(dates,2)=E4)

Lavorando dall'interno verso l'esterno, la funzione WEEKDAY è configurata con l'argomento opzionale 2, che fa sì che restituisca i numeri 1-7 rispettivamente per i giorni dal lunedì alla domenica. In questo modo è più semplice elencare i giorni in ordine con i numeri nella colonna E in sequenza.

WEEKDAY quindi valuta ogni data nell'intervallo denominato "date" e restituisce un numero. Il risultato è un array come questo:

(1;3;7;1;5;2;7;1;7;5;4;7)

I numeri restituiti da WEEKDAY vengono quindi confrontati con il valore in E4, che è 1:

(1;3;7;1;5;2;7;1;7;5;4;7)=1

Il risultato è una matrice di valori VERO / FALSO.

(TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;FALSE)

SUMPRODUCT funziona solo con i numeri (non testo o booleani) quindi usiamo il doppio negativo per forzare i valori VERO / FALSO a uno e zeri:

(1;0;0;1;0;0;0;1;0;0;0;0)

Con un singolo array da elaborare, SUMPRODUCT somma gli elementi e restituisce il risultato, 3.

Trattare con date vuote

Se nell'elenco delle date sono presenti celle vuote, otterrai risultati errati, poiché la funzione GIORNO.SETTIMANA restituirà un risultato anche in assenza di data. Per gestire le celle vuote, puoi regolare la formula come segue:

=SUMPRODUCT((WEEKDAY(dates,2)=E4)*(dates""))

Moltiplicare per l'espressione (date "") è un modo per cancellare le celle vuote.

Articoli interessanti...