Fórmula do Excel: obtenha a primeira entrada por mês e ano -

Índice

Fórmula genérica

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

Resumo

Para pesquisar a primeira entrada em uma tabela por mês e ano, você pode usar uma fórmula de matriz com base nas funções INDEX, MATCH e TEXT.

a função LOOKUP com a função TEXT. No exemplo mostrado, a fórmula em F5 é:

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

onde "entrada" é o intervalo nomeado C5: C13, "data" é o intervalo nomeado B5: B13 e E5 contém uma data válida.

Esta é uma fórmula de matriz e deve ser inserida com control + shift + enter.

Explicação

Observação: os valores em E5: E7 são datas reais, formatadas com o formato de número personalizado "mmaa".

Trabalhando de dentro para fora, a expressão:

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

usa a função TEXT para gerar uma matriz de strings no formato "mmaa":

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

que são comparados em uma única string com base no valor em E5, "0117". O resultado é uma matriz de valores TRUE / FALSE:

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

que são alimentados na função MATCH como a matriz de pesquisa, com um valor de pesquisa TRUE e um tipo de correspondência zero para correspondência exata. No modo de correspondência exata, a função MATCH retorna a posição do primeiro TRUE na matriz, que é 1 na fórmula em F5. Esta posição vai para INDEX como o número da linha, com uma matriz baseada no intervalo nomeado "entrada":

=INDEX(entry,1)

O índice retorna o item dentro da entrada na posição especificada.

Observação: se uma entrada não for encontrada para um determinado mês e ano, esta fórmula retornará # N / A.

Primeira entrada com base na data de hoje

Para obter a primeira entrada para um determinado mês e ano com base na data de hoje, você pode adaptar a fórmula para usar a função TODAY em vez do valor em E5:

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

Artigos interessantes...