Notifications
Clear all

Como referenciar uma matriz usando LIN()? (tipo: "M1:M+LIN(O4)" -> "M1:M4")

5 Posts
2 Usuários
0 Reactions
945 Visualizações
(@mateusutz)
Posts: 8
Active Member
Topic starter
 

Olá pessoal! Espero que todos estejam bem. 

 

Estou aqui quebrando a cabeça para fazer um "procurar de baixo pra cima a partir de uma célula" e preciso de ajuda com uma possibilidade (fiquem a vontade para sugerir outras! 

Anexei uma imagem pra ilustrar o que eu estou tentando fazer (fiz o print no google, mas tô usando excel!) . A cada linha, na coluna C, eu quero puxar o último valor registrado com a mesma referência, contida na coluna A. No exemplo, puxaria o valor "12".

Eu vi que pra procurar de baixo pra cima se usa a fórmula =PROC(2;1/("matriz_proc"="cel_valorproc");"matriz_resposta"). Aí eu pensei em fazer algo "dinâmico" com essa "matriz_proc", mas não funciona usar "A1:A" & LIN(..)

Alguma ideia de como fazer isso? 

 

Agradeço a ajuda desde já!! 

Abraço 

 
Postado : 25/08/2020 9:54 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bem vindo ao nosso fórum Planilhando, @mateusutz

Não entendi o que vc realmente deseja e não vi relação clara entre o título do tópico, a descrição do problema e a fórmula usada na imagem postada. Especificamente, não entendi:

Postado por: @mateusutz

...fazer um "procurar de baixo pra cima a partir de uma célula".

Procurar o quê de baixo pra cima? Naquilo que deveria ser sua explicação fiquei com mais dúvida ainda:

Postado por: @mateusutz

A cada linha...eu quero puxar o último valor registrado com a mesma referência, contida na coluna A. No exemplo, puxaria o valor "12".

Como vc chegou a esse valor "12"? E em que linha?

Algo me diz que vc está procurando pela função INDIRETO, mas nem isso ficou claro pois na fórmula mostrada na imagem, vc tenta fazer uma operação matemática com os valores da coluna A, mas nela só tem texto.

Procure mostrar manualmente numa das colunas como ficaria o resultado esperado para cada linha, explicando pelo menos 1 ou 2 delas passo-a-passo como vc chegou no resultado.

Referindo-se tão somente ao título do seu tópico, a fórmula para fazer o que vc descreve seria:

=LIN(INDIRETO("M1:M"&LIN(O4)))

Uma dica: ao invés de uma imagem, procure postar um arquivo excel abrangendo sua dúvida.

 

 
Postado : 26/08/2020 9:55 am
(@mateusutz)
Posts: 8
Active Member
Topic starter
 

Olá, @edsonbr !

 

Vamos tentar novamente então...

Na coluna A eu tenho alguns "nomes" e na coluna B eu tenho alguns valores, que são respectivos aos "nomes". Agora, na coluna C, eu quero trazer o último valor (coluna B) que aquele "nome"(coluna A) teve imediatamente antes.

Então, neste exemplo que eu trago na imagem, a Célula C4 tem que ver qual é o "nome" em A4 ("A") e procurar nas linhas acima ("A1:A3") por este valor. Assim que encontrar o primeiro, que no exemplo seria em A1, ele traz o valor de B1 ("12") para a célula C4.

 

 

 
Postado : 26/08/2020 10:21 am
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 
Postado por: @mateusutz

...quero trazer o último valor (coluna B) que aquele "nome"(coluna A) teve imediatamente antes.

Entendi.

Só que, no seu exemplo, o único que "teve imediatamente antes" algum item na coluna A é o da linha 4 mesmo. Os outros são todos exclusivos e não tiveram um valor anterior pra mostrar. Nesse caso, a coluna C ficaria preenchida com vazio ou com o primeiro valor que ocorrer mesmo?

Se for com vazio, a fórmula matricial (finalize com CTRL SHIFT ENTER) em C1 poderia ser:

=SE(CONT.SE(A$1:A1;A1)>=2;ÍNDICE(B:B;MAIOR((A$1:A1=A1)*LIN(A$1:A1);2);1);"")

Se for com a primeira ocorrência:

=SE(CONT.SE(A$1:A1;A1)>=2;ÍNDICE(B:B;MAIOR((A$1:A1=A1)*LIN(A$1:A1);2);1);B1)

Arraste para as outras células. 

Obs.: procure seguir as recomendações dadas de anexar arquivo e de demonstrar manualmente no arquivo como deveria ficar o resultado.

 
Postado : 26/08/2020 11:15 am
(@mateusutz)
Posts: 8
Active Member
Topic starter
 

 @edsonbr você matou a xarada DUAS vezes!!

Seu código funcionou perfeitamente, testei ambos e fez exatamente o que precisava.

Mas olhando ele, eu vi que tudo que eu precisava fazer era travar a primeira célula da matriz ("$A$1:A1"). Assim, o início ficava fixo e o final ia se adequando conforme eu arrastasse a fórmula para as demais linhas. 

Consegui usar agora a fórmula inicial que tinha em mente, assim as linhas inicias ficam como:

(...)
=PROC(2;1/($A$1:A3=A4);$B$1:B3)
=PROC(2;1/($A$1:A4=A5);$B$1:B4)
=PROC(2;1/($A$1:A5=A6);$B$1:B5)
(...)

Mas vou ficar com seu segundo código, da primeira ocorrência

Abraço!

 
Postado : 26/08/2020 12:02 pm