Fórmula do Excel: Pesquisar última versão do arquivo -

Fórmula genérica

=LOOKUP(2,1/(ISNUMBER(FIND(filename,range))),range)

Resumo

Para consultar a versão mais recente do arquivo em uma lista, você pode usar uma fórmula baseada na função LOOKUP junto com as funções ISNUMBER e FIND. No exemplo mostrado, a fórmula na célula G7 é:

=LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files)

onde "arquivos" é o intervalo nomeado B5: B11.

Contexto

Neste exemplo, temos várias versões de arquivo listadas em uma tabela com data e nome de usuário. Observe que os nomes dos arquivos são repetidos com um contador no final como um número de revisão - 001, 002, 003, etc.

Dado um nome de arquivo, queremos recuperar o nome da última ou da última revisão. Existem dois desafios:

  1. O desafio é que os códigos de versão no final dos nomes dos arquivos tornam mais difícil corresponder ao nome do arquivo.
  2. Por padrão, as fórmulas de correspondência do Excel retornarão a primeira correspondência, não a última.

Para superar esses desafios, precisamos usar algumas técnicas complicadas.

Explicação

Esta fórmula usa a função LOOKUP para localizar e recuperar o último nome de arquivo correspondente. O valor de pesquisa é 2 e o lookup_vector é criado com este:

1/(ISNUMBER(FIND(G6,files)))

Dentro deste trecho, a função FIND procura o valor em G6 dentro do intervalo nomeado "arquivos" (B5: B11). O resultado é uma matriz como esta:

(1;#VALUE!;1;1;#VALUE!;#VALUE!;1)

Aqui, o número 1 representa uma correspondência e o erro #VALUE representa um nome de arquivo não correspondente. Essa matriz vai para a função ISNUMBER e sai assim:

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

Os valores de erro agora são FALSE, e o número 1 agora é TRUE. Isso supera o desafio nº 1, agora temos uma matriz que mostra claramente quais arquivos na lista contêm o nome do arquivo de interesse.

Em seguida, a matriz é usada como denominador com 1 como numerador. O resultado é o seguinte:

(1;#DIV/0!;1;1;#DIV/0!;#DIV/0!;1)

que vai para LOOKUP como lookup_vector. Esta é uma solução complicada para o desafio nº 2. A função LOOKUP opera apenas no modo de correspondência aproximada e ignora automaticamente os valores de erro. Isso significa que com 2 como valor de pesquisa, VLOOKUP tentará encontrar 2, falhará e voltará ao número anterior (neste caso, correspondendo ao último 1 na posição 7). Finalmente, LOOKUP usa 7 como um índice para recuperar o 7º arquivo na lista de arquivos.

Tratamento de pesquisas em branco

Estranhamente, a função FIND retorna 1 se o valor de pesquisa for uma string vazia (""). Para se proteger contra uma correspondência falsa, você pode agrupar a fórmula em IF e testar uma pesquisa vazia:

=IF(G6"",LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files),"")

Artigos interessantes...