Supondo que os dados sejam numéricos, tente LOOKUP, em A53 copiado em:
=LOOKUP(9.9E+307,A1:A52)
Eu tenho uma planilha de 16 colunas com 53 linhas. À medida que cada semana do ano passa, outra linha é preenchida com dados de 16 indivíduos.
Eu quero que a linha inferior represente sempre a pontuação atual de uma pessoa (já que estamos na 9ª semana do ano, a célula A53 tem atualmente a fórmula = A9).
No entanto, quando a semana 10 chegar e a décima linha for preenchida, terei que alterar a fórmula para = A10. Gostaria de encontrar uma maneira de selecionar automaticamente a linha preenchida inferior em vez de ter que alterar a fórmula toda semana.
Eu vi a pergunta relacionada Selecionar automaticamente a última linha em um conjunto no Excel , mas essa solução não funcionou para mim.
Você não precisa de nenhum complemento extra instalado - basta digitar isso em A53
:
=INDIRECT("A"&COUNTA(A$1:A$52))
Para o seu caso, ele retornará o último valor não vazio no intervalo A1:A52
. Você pode corrigir o intervalo como quiser, mas mantenha as referências de linha absoluto para evitar erros caso a fórmula seja movida para baixo. No entanto, você pode preencher automaticamente todas as 16 colunas - somente a coluna será ativada.
Se você instalar o pacote de ferramentas de análise, terá acesso ao WeekNum (serial, retornar ) função.
No caso em que o programa sempre inicia na primeira semana do ano, você pode configurar uma instrução indireta que use WeekNum () para selecionar de onde obter informações. Algo como:
=Indirect(Concatenate("A", WeekNum(Today()))
na célula onde você deseja os dados mais recentes. Se o programa iniciar em outro momento, você poderá descobrir qual semana do ano começou e subtrair isso da parte WeekNum () da fórmula. Por exemplo, se você começar na semana 10 (então, os resultados da semana 11 estão em A3, assumindo um cabeçalho na linha 1):
=Indirect(Concatenate("A", WeekNum(Today()-9))
NB: Eu não estou na frente de uma máquina com o Excel atm, então a sintaxe pode estar um pouco fora. Você também pode ter que checar as linhas de cabeçalho e assim por diante, mas isso deve ser trivial.
Resumindo as respostas e adicionando meu 2c:
Você geralmente precisa executar duas etapas:
Descobrir a linha que você deseja obter. Seguindo as opções
=COUNTA($A$1:$A$52)
- contará todos os elementos - mas ignorará os espaços em branco. Então, se alguém não entrar na semana 7, mas na semana 8 & 9, isso retornará 8 =WEEKNUM(TODAY())
- retorna o número da semana atual. Ele mudará semanas imediatamente na segunda-feira - mesmo que nenhum dado seja inserido ainda. =MATCH("",$A$1:$A$52,0)
- isso retornará a primeira linha em branco (portanto, use-a junto com -1
. Quando você tiver o número da linha (vamos usar N
para o resultado / fórmula da etapa 1), será necessário informar ao Excel para retornar a linha Nth . Para isso, você tem várias opções:
=INDIRECT("A"&N)
- isso irá construir o endereço, digamos A9 e então retornar o valor naquela célula =OFFSET($A$1,N-1)
- isso usará A1 como a célula inicial, compensará por N-1 linhas e retornará esse resultado =INDEX($A$1:$A$52,N)
- isso retornará o enésimo elemento do intervalo A1: A52. No seu caso, cada opção é igualmente adequada e uma questão de gosto pessoal. No entanto, caso você esteja usando muitas dessas fórmulas em um modelo complexo, a fórmula INDEX
é superior a OFFSET
e INDIRECT
porque é não volátil . Isso significa que o Excel calcula apenas uma vez - e depois somente se algum de seus predecessores for alterado. INDIRECT
e OFFSET
, por outro lado, são voláteis , portanto, o Excel sempre os calculará - mesmo que nenhum de seus antecessores tenha sido alterado - e, como consequência, todas as células dependentes! Isso significa que todo recálculo vai demorar muito mais do que com INDEX
Agora, você só precisa combinar as etapas 1 e 2 em uma fórmula unida, por exemplo, =INDEX($A1:$A$52,WEEKNUM(TODAY()))
e pronto.
A resposta de Barry =LOOKUP(9.9E+307,A1:A52)
é ótima: ela sempre retorna o último valor (de cima para baixo) que não está em branco.
Tags microsoft-excel