Formula Excel: ottieni la prima voce per mese e anno -

Sommario

Formula generica

(=INDEX(entry,MATCH(TRUE,TEXT(date,"mmyy")=TEXT(A1,"mmyy"),0)))

Sommario

Per cercare la prima voce in una tabella per mese e anno, è possibile utilizzare una formula di matrice basata sulle funzioni INDICE, CONFRONTA e TESTO.

la funzione CERCA con la funzione TESTO. Nell'esempio mostrato, la formula in F5 è:

=INDEX(entry,MATCH(TRUE,TEXT(date,"mmyy")=TEXT(E5,"mmyy"),0))

dove "voce" è l'intervallo denominato C5: C13, "data" è l'intervallo denominato B5: B13 ed E5 contiene una data valida.

Questa è una formula di matrice e deve essere inserita con CTRL + MAIUSC + INVIO.

Spiegazione

Nota: i valori in E5: E7 sono date effettive, formattate con il formato numerico personalizzato "mmyy".

Lavorando dall'interno verso l'esterno, l'espressione:

MATCH(TRUE,TEXT(date,"mmyy")=TEXT(E5,"mmyy")

utilizza la funzione TEXT per generare un array di stringhe nel formato "mmyy":

("0117"; "0117"; "0117"; "0217"; "0217"; "0217"; "0317"; "0317"; "0317")

che vengono confrontati una singola stringa in base al valore in E5, "0117". Il risultato è una matrice di valori VERO / FALSO:

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

che vengono inseriti nella funzione MATCH come array di ricerca, con un valore di ricerca TRUE e un tipo di corrispondenza zero per la corrispondenza esatta. Nella modalità di corrispondenza esatta, la funzione CONFRONTA restituisce la posizione del primo VERO nella matrice, che è 1 nella formula in F5. Questa posizione va in INDICE come numero di riga, con un array basato sulla "voce" dell'intervallo denominato:

=INDEX(entry,1)

Indice restituisce l'elemento all'interno della voce nella posizione specificata.

Nota: se non viene trovata una voce per un determinato mese e anno, questa formula restituirà # N / D.

Prima voce basata sulla data odierna

Per ottenere la prima voce per un determinato mese e anno in base alla data odierna, è possibile adattare la formula per utilizzare la funzione OGGI invece del valore in E5:

(=INDEX(entry,MATCH(TRUE,TEXT(date,"mmyy")=TEXT(TODAY(),"mmyy"),0)))

Articoli interessanti...