Alguém conhece a fórmula para encontrar o valor da última célula não vazia de uma coluna, no Microsoft Excel?
excel
worksheet-function
MichaelS
fonte
fonte
Respostas:
Isso funciona com texto e números e não se importa se houver células em branco, ou seja, retornará a última célula não em branco.
Ele precisa ser inserido na matriz , o que significa que você pressiona Ctrl-Shift-Enter depois de digitá-lo ou colá-lo. O seguinte é para a coluna A:
fonte
CELL()
ouOFFSET()
), enquanto o mais votado retorna um valor sem dizer onde ele está.Usar a seguinte fórmula simples é muito mais rápido
Para Excel 2003:
Oferece as seguintes vantagens:
Explicação:
(A:A<>"")
retorna array{TRUE,TRUE,..,FALSE,..}
1/(A:A<>"")
modifica esta matriz para{1,1,..,#DIV/0!,..}
.LOOKUP
espera um array ordenado em ordem crescente , e levando em consideração que se aLOOKUP
função não puder encontrar uma correspondência exata, ela escolhe o maior valor nolookup_range
(no nosso caso{1,1,..,#DIV/0!,..}
) que é menor ou igual ao valor (no nosso caso2
), formula encontra o último1
na matriz e retorna o valor correspondente deresult_range
(terceiro parâmetro -A:A
).Também uma pequena observação - a fórmula acima não leva em consideração células com erros (você pode vê-la somente se a última célula não vazia tiver erro). Se você quiser levá-los em consideração, use:
a imagem abaixo mostra a diferença:
fonte
LOOKUP
diz que o último argumentoresult_vector
é opcional. No entanto, se omiti-lo, obtenho um resultado muito estranho que não compreendo.LOOKUP
função não consegue encontrar olookup_value
, a função corresponde ao maior valor emlookup_vector
que é menor ou igual alookup_value.
" Se eu usar=LOOKUP(2,A:A<>"",A:A)
sem gerar o#DIV/0!
erro por1/...
, parece que ele retorna algum valor no meio de o vetor. Eu não encontrei qual é a funcionalidade exata neste caso.=LOOKUP(2,1/(A:A<>""),ROW(A:A))
mas adicionarROW
função adicionará o efeito de "volatilidade" - a fórmula será recalculada cada vez que qualquer célula na planilha for alteradaAqui está outra opção:
=OFFSET($A$1;COUNTA(A:A)-1;0)
fonte
COUNTA
vez deCOUNT
). Sem mencionar as células em branco.Inspirado pela grande pista dada pela resposta de Doug Glancy, descobri uma maneira de fazer a mesma coisa sem a necessidade de uma fórmula de matriz. Não me pergunte por quê, mas faço questão de evitar o uso de fórmulas de array, se possível (não por qualquer razão em particular, é apenas o meu estilo).
Aqui está:
Para encontrar a última linha não vazia usando a coluna A como coluna de referência
Para encontrar a última coluna não vazia usando a linha 1 como a linha de referência
Isso pode ser utilizado em conjunto com a função de índice para definir eficientemente intervalos nomeados dinâmicos, mas isso é algo para outro post, pois não está relacionado à questão imediata abordada aqui.
Eu testei os métodos acima com o Excel 2010, tanto "nativamente" quanto no "Modo de compatibilidade" (para versões mais antigas do Excel) e eles funcionam. Novamente, com eles, você não precisa fazer nenhum dos Ctrl + Shift + Enter. Aproveitando a maneira como sumproduct funciona no Excel, podemos controlar a necessidade de realizar operações de matriz, mas fazemos isso sem uma fórmula de matriz. Espero que alguém por aí aprecie a beleza, simplicidade e elegância dessas soluções de sumproduct propostas tanto quanto eu. Eu não atesto a eficiência da memória das soluções acima. Só que eles são simples, têm uma aparência bonita, ajudam no propósito pretendido e são flexíveis o suficiente para estender seu uso a outros propósitos :)
Espero que isto ajude!
Muito bem sucedida!
fonte
Sei que essa pergunta é antiga, mas não estou satisfeito com as respostas fornecidas.
LOOKUP, VLOOKUP e HLOOKUP têm problemas de desempenho e nunca devem ser usados.
As funções de matriz têm muita sobrecarga e também podem ter problemas de desempenho, portanto, devem ser usadas apenas como último recurso.
COUNT e COUNTA apresentam problemas se os dados não estiverem contiguamente não em branco, ou seja, você tem espaços em branco e dados novamente no intervalo em questão
INDIRETO é volátil, portanto, deve ser usado apenas como último recurso
OFFSET é volátil, então só deve ser usado como último recurso
qualquer referência à última linha ou coluna possível (a 65536ª linha no Excel 2003, por exemplo) não é robusta e resulta em sobrecarga extra
Isso é o que eu uso
quando o tipo de dados é misturado:
=max(MATCH(1E+306,[RANGE],1),MATCH("*",[RANGE],-1))
quando se sabe que os dados contêm apenas números:
=MATCH(1E+306,[RANGE],1)
quando se sabe que os dados contêm apenas texto:
=MATCH("*",[RANGE],-1)
MATCH tem a menor sobrecarga e não é volátil, portanto, se você estiver trabalhando com muitos dados, este é o melhor para usar.
fonte
TRUE
/FALSE
), eles não serão detectados. Apesar do fato de que essa resposta não é à prova de balas, ainda acho que ela tem o menor impacto no desempenho.=INDEX(N:N,MATCH(1E+306,N:N,1))
Isso funciona no Excel 2003 (e posteriormente com pequenas edições, veja abaixo). Pressione Ctrl + Shift + Enter (não apenas Enter) para inserir isso como uma fórmula de matriz.
Esteja ciente de que o Excel 2003 não pode aplicar uma fórmula de matriz a uma coluna inteira. Fazer isso rende
#NUM!
; resultados imprevisíveis podem ocorrer! (EDITAR : Informações conflitantes da Microsoft: o mesmo pode ou não ser verdade sobre o Excel 2007; o problema pode ter sido corrigido em 2010. )É por isso que aplico a fórmula de matriz para intervalo
A1:A65535
e dou tratamento especial à última célula, que estáA65536
no Excel 2003. Não posso apenas dizerA:A
ou mesmoA1:A65536
porque o último reverte automaticamente paraA:A
.Se você tiver certeza absoluta de que
A65536
está em branco, você pode pular aIF
parte:Observe que se você estiver usando o Excel 2007 ou 2010, o número da última linha é 1048576 e não 65536, então ajuste o acima conforme apropriado.
Se não houver células em branco no meio de seus dados, eu usaria apenas a fórmula mais simples
=INDEX(A:A,COUNTA(A:A))
,.fonte
=INDEX(19:19,COUNTA(19:19))
Uma solução alternativa sem fórmulas de matriz, possivelmente mais robusta do que a resposta anterior com uma (dica para) solução sem fórmulas de matriz , é
Veja esta resposta como um exemplo. Parabéns a Brad e Barry Houdini , que ajudaram a resolver essa questão .
As possíveis razões para preferir uma fórmula sem matriz são fornecidas em:
Uma página oficial da Microsoft (procure "Desvantagens do uso de fórmulas de matriz").
As fórmulas de matriz podem parecer mágicas, mas também têm algumas desvantagens:
Array Formula Heresy .
fonte
A
ocorrências por umD
. O que estou fazendo de errado?se você pesquisar na coluna (A), use:
se o seu intervalo for A1: A10, você pode usar:
nesta fórmula:
retorna o último número da linha não em branco e indir () retorna o valor da célula.
fonte
=INDEX(A:A, COUNTA(A:A), 1)
tirado daquifonte
=MATCH("*";A1:A10;-1)
para dados textuais=MATCH(0;A1:A10;-1)
para dados numéricosfonte
Eu tentei todas as versões não voláteis, mas nenhuma das versões acima funcionou. Excel 2003/2007 atualização. Certamente isso pode ser feito no Excel 2003. Não como uma matriz nem como uma fórmula padrão. Eu recebo apenas um erro em branco, 0 ou #valor. Então eu recorri aos métodos voláteis .. Isso funcionou ..
@Julian Kroné .. Usando ";" em vez de "," NÃO funciona! Acho que você está usando o Libre Office e não o MS Excel? LOOKUP é tão irritantemente volátil que uso-o apenas como último recurso
fonte
Coloque este código em um módulo VBA. Salve . Nas funções, definido pelo usuário, procure por esta função.
fonte
para dados textuais:
para dados numéricos:
Isso fornece o índice relativo da última célula não vazia no intervalo selecionado (aqui A1: A10).
Se você deseja obter o valor, acesse-o via INDIRETO após construir -textualmente- a referência absoluta da célula, por exemplo:
fonte
Eu também tive o mesmo problema. Esta fórmula também funciona bem: -
14 sendo o número da linha da primeira linha nas linhas que você deseja contar.
Dente de garra crônico
fonte
Eu usei HLOOKUP
A1
tem um encontro;A2:A8
tem previsões capturadas em momentos diferentes, quero o mais recenteIsso usa uma fórmula hlookup padrão com a matriz de pesquisa definida pelo número de entradas.
fonte
Se você sabe que não haverá células vazias entre eles, o caminho mais rápido é este.
Ele apenas conta as células não vazias e se refere à célula apropriada.
Ele também pode ser usado para um intervalo específico.
Isso retorna a última célula não vazia no intervalo O4: O34.
fonte
Para Microsoft office 2013
"Último menos um" de uma linha não vazia:
"Última" linha não vazia:
fonte
Esta fórmula funcionou comigo para o Office 2010:
= LOOKUP (2; 1 / (A1: A100 <> ""); A1: A100)
A1: a primeira célula A100: refere-se à última célula na comparação
fonte
Acho que a resposta de W5ALIVE é mais próxima do que uso para encontrar a última linha de dados em uma coluna. Supondo que estou procurando a última linha com dados na Coluna A, porém, eu usaria o seguinte para uma pesquisa mais genérica:
O primeiro MATCH encontrará a última célula de texto e o segundo MATCH encontrará a última célula numérica. A função IFERROR retorna zero se a primeira correspondência encontrar todas as células numéricas ou se a segunda correspondência encontrar todas as células de texto.
Basicamente, esta é uma pequena variação da solução mista de texto e número do W5ALIVE.
Ao testar o tempo, isso foi significativamente mais rápido do que as variações de LOOKUP equivalentes.
Para retornar o valor real da última célula, prefiro usar a referência indireta de células assim:
O método oferecido por sancho.s é talvez uma opção mais limpa, mas eu modificaria a parte que encontra o número da linha para este:
a única diferença é que ", 1" retorna o primeiro valor, enquanto ", 0" retorna toda a matriz de valores (todos menos um dos quais não são necessários). Ainda tendo a preferir endereçar a célula à função de índice lá, em outras palavras, retornar o valor da célula com:
Grande discussão!
fonte
Se você não tem medo de usar matrizes, a fórmula a seguir é muito simples para resolver o problema:
= SOMA (SE (A: A <> "", 1,0))
Você deve pressionar CTRL + SHIFT + ENTER porque esta é uma fórmula de matriz.
fonte
Um simples que funciona para mim:
fonte
Ok, eu tive o mesmo problema do autor da pergunta e tentei as duas principais respostas. Mas apenas obtendo erros de fórmula. Acontece que eu precisava trocar o "," por ";" para que as fórmulas funcionem. Estou usando o XL 2007.
Exemplo:
ou
fonte
Para rastreamento de versão (adicionando a letra v ao início do número), descobri que este funciona bem no Xcelsius (SAP Dashboards)
fonte