Fórmula do Excel: Listar nomes de planilhas com fórmula -

Fórmula genérica

=GET.WORKBOOK(1)&T(NOW())

Resumo

Para listar planilhas em uma pasta de trabalho do Excel, você pode usar uma abordagem de 2 etapas: (1) definir um intervalo nomeado chamado "nomes de planilha" com um comando de macro antigo e (2) usar a função INDEX para recuperar nomes de planilhas usando o intervalo nomeado. No exemplo mostrado, a fórmula em B5 é:

=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))

Nota: Encontrei esta fórmula no quadro de mensagens MrExcel em uma postagem de T. Valko.

Explicação

O intervalo nomeado "sheetnames" é criado com este código:

=GET.WORKBOOK(1)&T(NOW())

GET.WORKBOOK é um comando de macro que recupera uma matriz de nomes de planilha na pasta de trabalho atual. A matriz resultante é semelhante a esta:

("(workbook.xlsm)Sheet1","(workbook.xlsm)Sheet2","(workbook.xlsm)Sheet3","(workbook.xlsm)Sheet4","(workbook.xlsm)Sheet5")

Uma expressão enigmática é concatenada ao resultado:

&T(NOW())

O objetivo deste código é forçar o recálculo para selecionar as alterações nos nomes das planilhas. Como NOW é uma função volátil, ela recalcula a cada alteração na planilha. A função NOW retorna um valor numérico que representa a data e a hora. A função T retorna uma string vazia ("") para valores numéricos, então a concatenação não tem efeito sobre os valores.

De volta à planilha, a célula B6 contém esta fórmula copiada:

=INDEX(MID(sheetnames,FIND(")",sheetnames)+1,255),ROWS($B$5:B5))

Trabalhando de dentro para fora, a função MID é usada para remover os nomes das planilhas. A matriz resultante é semelhante a esta:

("Sheet1","Sheet2","Sheet3","Sheet4","Sheet5")

Isso vai para a função INDEX como "array". A função ROW usa um intervalo de expansão para gerar um número de linha crescente. A cada nova linha, INDEX retorna o próximo valor da matriz. Quando não houver mais nomes de planilhas para imprimir, a fórmula retornará um erro #REF.

Observação: como essa fórmula depende de um comando de macro, você precisará salvar como uma pasta de trabalho habilitada para macro se quiser que a fórmula continue a atualizar os nomes das planilhas depois que o arquivo for fechado e reaberto. Se você salvar como uma planilha normal, o código sheetname será removido.

Bons links

Postagem do Sr. Excel no fórum por T. Valko

Artigos interessantes...