Notifications
Clear all

Buscar ultimo valor com 3 condições formula matricial

8 Posts
3 Usuários
0 Reactions
1,319 Visualizações
(@t69114)
Posts: 4
New Member
Topic starter
 

Olá a todos!

Senhores, tenho um problema com uma formula matricial que não está calculando os valores corretos com 3 argumentos mas com 2 calcula.

Pesquisei por aí e encontrei 2 soluções possíveis. Porém em nenhuma das duas consigo adicionar o parametro que preciso.

A primeira solução é um pouco mais simples porém acredito não funcionar pois trabalho com numeros e textos. (posso estar errado)
a formula é : =MÁXIMO(SE(ALFA!B:B=A11;SE(ALFA!C:C=B11;ALFA!A:A)))
ela consta nas celulas C11:E14 da aba Beta na planilha em anexo. Notem que ela não trouxe os nomes na coluna C (em vermelho).

A segunda solução é:
=ÍNDICE(ALFA!$D$2:$D$100;MÁXIMO(SE((ALFA!$B$2:$B$100=$A6)*(ALFA!$C$2:$C$100=$B6);LIN(INDIRETO("1:"&LINS(ALFA!$D$2:$D$100)));0)))
Constando nas celulas C6:E9 da aba Beta na planilha em anexo. Esta funciona perfeitamente neste exemplo que encontrei em pesquisas.

PORÉM, no ambiente que preciso utiliza-la, são necessários 3 parametros. Este exemplo esta na aba TESTE
No exemplo acima temos 2 parametros de busca que são: (ALFA!$B$2:$B$100=$A6)*(ALFA!$C$2:$C$100=$B6) e se eu utilizar a formula somente com 2 parâmetros ela funciona, conforme pode ser visto na celula G2.
Já na celula G3 adicionei o parâmetro (INT(A2:A30)=G1) para comparar a data e trazer o Ultimo valor do respectivo dia.
A formula ficou assim:
=ÍNDICE(A2:A30;MÁXIMO(SE((B2:B30=F3)*(C2:C30=H1)*(INT(A2:A30)=G1);LIN((INDIRETO("1:"&LINS(A2:A30))));0)))

Esta ultima formula traz sempre o 1º registro do intervalo da busca.

Será que fui claro ?? rss

Segue a planilha:

Agradeço desde já!!

 
Postado : 25/06/2015 2:29 pm
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Olá!
Sua lógica está praticamente certa. Pelo que vi, só faltou forçar um erro no ÍNDICE quando os 3 critérios não são atendidos, pois do jeito que está a função MÁXIMO nesta situação sempre trará 0, que resulta no índice da primeira célula no caso de fórmula matricial. Assim, para resolver o problema use a fórmula com os intervalos já ajustados para referências absolutas e mistas:

=SEERRO(ÍNDICE($A$2:$A$30;MÁXIMO(SE(($B$2:$B$30=$F2)*($C$2:$C$30=$H$1)*(INT($A$2:$A$30)=$G$1);LIN((INDIRETO("1:"&LINS($A$2:$A$30))));-1)));"-")

Assim, é só arrastar.

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 25/06/2015 3:03 pm
(@t69114)
Posts: 4
New Member
Topic starter
 

Olá Rafael!!

Agradeço a ajuda, mas não resolveu o problema.

Na verdade eu tenho uma planilha com diversos valores iguais em datas diferentes.

O que eu preciso é identificar o ultimo deles e trazer a data deste. Levando em consideração 3 critérios (nome, Dia do mês, e tipo de descrição)

A sua dica realmente me será útil para controlar o caso de não haver o registro, mas não consegui buscar o ultimo valor com os 3 critérios.

 
Postado : 25/06/2015 4:08 pm
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Olá!
Não sei se entendi bem a sua necessidade. Bom, veja se o arquivo anexo é o que você deseja.

Fiz outra alternativa, mas basicamente com o mesmo conceito. Dessa vez utilizei esta estrutura de fórmula:

=SEERRO(MÁXIMO(SE(($B$2:$B$30=$F3)*($C$2:$C$30=$H$2)*(INT($A$2:$A$30)=$G$2);VALOR($A$2:$A$30);0));"-")

E também, ao invés de criar uma condição na fórmula para o caso de nenhum critério atender, eu criei uma condição na formatação personalizada da célula para trazer "Não localizado" no caso da fórmula retornar 0. É uma técnica interessante na minha opinião.

Abs.

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 26/06/2015 6:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia,

Minha sugestão de fórmula é a seguinte:

=SE(MÁXIMO(SOMARPRODUTO((F2=$B$2:$B$30)*(INT($G$1)=INT($A$2:$A$30))*($H$1=$C$2:$C$30)*(LIN($A$2:$A$30))))>1;ÍNDICE($A$1:$C$30;MÁXIMO(SOMARPRODUTO((F2=$B$2:$B$30)*(INT($G$1)=INT($A$2:$A$30))*($H$1=$C$2:$C$30)*(LIN($A$2:$A$30))));1);"NÃO ENCONTRADO")

Na fórmula, os intervalos vão até a linha 30, o que pode ser alterado conforme a necessidade.

Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 26/06/2015 6:45 am
(@t69114)
Posts: 4
New Member
Topic starter
 

Olá!!

JValq, agradeço a ajuda mas a sua fórmula não faz o que eu preciso. Agradeço mesmo assim.

Rafael, a sua formula resolve o problema!!

Utilizando sua planilha consigo fazer exatamente o que eu preciso... porém não consegui replicar na minha planilha ainda. Estou realizando testes e assim que tiver novidades eu informo.

E essa configuração personalizada, tem algum tutorial ou tópico?

Agradeço desde já!

 
Postado : 29/06/2015 6:48 am
Issamu
(@issamu)
Posts: 605
Honorable Member
 

Sobre formatação personalizada, vou te passar um link de um blog de um dos colaboradores deste site, que contém um guia bastante completo sobre o assunto:

http://gurudoexcel.com/blog/formatacao-personalizada-de-numeros/

Rafael Issamu F. Kamimura
Moderador Oficial Microsoft Community - MCC (Contribuidor do Microsoft Community)
http://zip.net/bjrt0X - http://zip.net/bhrvbR
Foi útil? Clique na mãozinha
Conheça: http://excelmaniacos.com/

 
Postado : 29/06/2015 7:02 am
(@t69114)
Posts: 4
New Member
Topic starter
 

Rafael, cara, tentei de várias maneiras replicar o que você fez na minha planilha e não consegui, não sei se é por causa da formatação que não funcionou.

Se puder dar uma dica sobre como vc montou a planilha talvez eu consiga.

Mas de qualquer forma, a sua formula resolveu o problema. eu montei a minha planilha em cima da que você mandou e deu tudo certo xD

Agradeço bastante a ajuda!!

Abraços.

 
Postado : 29/06/2015 7:39 am