Notifications
Clear all

Ajuda com procv, indice e corresp

16 Posts
3 Usuários
0 Reactions
2,735 Visualizações
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

Ola pessoal,

preciso muito da vossa ajuda, ja procurei no site, encontrei algo parecido mas nao consegui adaptar às minhas necessidades:

tenho um planilha (plan1) de servicos a serem realizados de Jan a Dez e os respectivos dias que esses serviços devem ser realizados em cada mês e tenho outra planilha (plan2) onde gostaria que ao digitar o mes em A1, ele fizesse a pesquisa na plan1 e preenchesse de A2, A3, A4 em diante com todas as datas e serviços referente ao mes digitado em A1, em ordem crescente de data.

Exemplo: Plan1
SERVIÇO | jan | fev | mar | abr | mai | jun | jul | ago | set | out | nov | dez
Limpeza |..5..|..3..|..8..|..6..|
Revisão |..2..|..5..|..9..|..5..|
Extintor |..4..|..8..|..4..|..7..|

Exemplo: Plan2
_____A_____|____B____|____C____|____D____|
1 ..... mar
2 ...Extintor.|...4
3 ...Limpeza.|...8
4 ...Revisao..|...9
5

Desde já agradeço a atenção.

Rogerio

 
Postado : 24/10/2014 10:05 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia,

Veja se atende:

=ÍNDICE(Plan1!$B$2:$M$4;CORRESP(Plan2!$A2;Plan1!$A$2:$A$4;0);CORRESP(Plan2!$A$1;Plan1!$B$1:$M$1;0))

Abraço

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

 
Postado : 25/10/2014 6:11 am
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

Bom dia,

Veja se atende:

=ÍNDICE(Plan1!$B$2:$M$4;CORRESP(Plan2!$A2;Plan1!$A$2:$A$4;0);CORRESP(Plan2!$A$1;Plan1!$B$1:$M$1;0))

Abraço

Obrigado pela dica, mas nao atendeu.

Nao sei se fui bem claro no exemplo, mas segue uma planilha para exemplificar melhor.

https://www.sendspace.com/file/rnzkf3

Gostaria que preenchesse a Plan2 - A3:B12, com as datas da Plan1 referente ao Mes indicado em Plan2 - A1.

Grato.

 
Postado : 25/10/2014 7:23 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Cara, eu acho que vc tinha complicado a planiha, e acabou se confundinco.

Primeiro eu tive que tratar a tua Plan1, ela não estava das melhores, e a fórmula que vc utilizou para achar os dias correspondentes estava ruim, além de vc ter uma fórmula diferente para cada linha. Transformei tudo em uma fórmula única (usando como base os dados que estavam ali).

Depois eu fiz a busca que vc queria utilizar na Plan2. Aproveitei e incluí um range dinâmico, assim, se vc incluir mais locais, vai considerar automaticamente.

(Talvez desse pra simplificar um pouco, mas hoje eu não vi uma forma mais simples, quem sabe depois q a cabeça esfriar...)

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 25/10/2014 2:38 pm
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

Perfeito.

gtsalikis, muito obrigado.
Sei que o excel pode fazer muita coisa mais eu não sei fazer quase nada, foi um parto, para chegar naquela formula para achar os dias, rsrsrsrs, mas agora ficou bem melhor com uma fórmula unica.

Muito obrigado.

Rogerio

 
Postado : 25/10/2014 3:21 pm
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

gtsalikis,

desculpe lhe incomodar, mas fazendo uns testes mais apurados, notei que nos meses pares coincide de ter dois eventos no mesmo dia, ex. em fev tem dois dias 9 e dois dias 15, ok, esta correto, porem em Plan2, ficam duas linhas de cada dia, com os mesmos dados (dia, hora, local), ex. em fev ficam duas vezes Lageado e duas vezes Limeira.

Mais uma vez muito obrigado.

Rogerio

 
Postado : 25/10/2014 8:40 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Hmm..

Em C3, coloque esta fórmula:

=SEERRO(ÍNDICE(DESLOC(Plan1!$A$2;1;;CONT.VALORES(Plan1!$A:$A)-1);CORRESP(MENOR(SE((DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))<>"";(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))+(LIN(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))/1000));LINS($3:3));SE((DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))<>"";(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))+(LIN(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))/1000);99);0));"")

Em vez de terminar com Enter, termine com Ctrl + Shift + Enter, pois é uma fórmula matricial. Se deu certo, a fórmula vai ganhar chaves {}.

Troque também a fórmula em B3 por esta:
=SEERRO(ÍNDICE(DESLOC(Plan1!$C$2;1;;CONT.VALORES(Plan1!$A:$A)-1);CORRESP(C3;DESLOC(Plan1!$A$2;1;;CONT.VALORES(Plan1!$A:$A)-1);0));"")

Arraste as 2 para baixo.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 25/10/2014 10:19 pm
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

Hmm..

Em C3, coloque esta fórmula:

=SEERRO(ÍNDICE(DESLOC(Plan1!$A$2;1;;CONT.VALORES(Plan1!$A:$A)-1);CORRESP(MENOR(SE((DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))<>"";(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))+(LIN(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))/1000));LINS($3:3));SE((DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))<>"";(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))+(LIN(DESLOC(Plan1!$C$2;1;MÊS(Plan2!$A$1);CONT.VALORES(Plan1!$A:$A)-1))/1000);99);0));"")

Em vez de terminar com Enter, termine com Ctrl + Shift + Enter, pois é uma fórmula matricial. Se deu certo, a fórmula vai ganhar chaves {}.

Troque também a fórmula em B3 por esta:
=SEERRO(ÍNDICE(DESLOC(Plan1!$C$2;1;;CONT.VALORES(Plan1!$A:$A)-1);CORRESP(C3;DESLOC(Plan1!$A$2;1;;CONT.VALORES(Plan1!$A:$A)-1);0));"")

Arraste as 2 para baixo.

Abs

OK, Funcionou perfeitamente.

Só mais uma questão.... ;) para esta planilha.. :D :D

A planilha que postei, foi um exemplo e acabei esquecendo de uma situação:

tem alguns serviços que são realizados somente nos meses que tem 5 domingos. Se for para achar os dias correspondentes daquela maneira que eu postei na planilha, eu consigo, mas ai tenho que ter uma formula diferente para esta linha...

Mais uma vez muito obrigado.

Rogerio

 
Postado : 26/10/2014 7:51 am
(@gtsalikis)
Posts: 2373
Noble Member
 

tem alguns serviços que são realizados somente nos meses que tem 5 domingos. Se for para achar os dias correspondentes daquela maneira que eu postei na planilha, eu consigo, mas ai tenho que ter uma formula diferente para esta linha...

Eu não vi problema algum com o 5o domingo. Basta digitar na coluna B que a fórmula funciona perfeitamente.
Por exemplo, no Lageado (linha 9), estava "4º Dom" (B9); eu troquei por "5º Dom" e deu tudo certo.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 26/10/2014 8:35 am
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

tem alguns serviços que são realizados somente nos meses que tem 5 domingos. Se for para achar os dias correspondentes daquela maneira que eu postei na planilha, eu consigo, mas ai tenho que ter uma formula diferente para esta linha...

Eu não vi problema algum com o 5o domingo. Basta digitar na coluna B que a fórmula funciona perfeitamente.
Por exemplo, no Lageado (linha 9), estava "4º Dom" (B9); eu troquei por "5º Dom" e deu tudo certo.

tem razão, desculpe.....
errei na pergunta.

na verdade o serviço é no ultimo domingo do mês, e as vezes tem 4 as vezes tem 5.

Obrigado
Rogerio

 
Postado : 26/10/2014 3:43 pm
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

tem alguns serviços que são realizados somente nos meses que tem 5 domingos. Se for para achar os dias correspondentes daquela maneira que eu postei na planilha, eu consigo, mas ai tenho que ter uma formula diferente para esta linha...

Eu não vi problema algum com o 5o domingo. Basta digitar na coluna B que a fórmula funciona perfeitamente.
Por exemplo, no Lageado (linha 9), estava "4º Dom" (B9); eu troquei por "5º Dom" e deu tudo certo.

tem razão, desculpe.....
errei na pergunta :oops:

* na verdade o serviço é no ultimo domingo do mês, e as vezes cai no 4º as vezes no 5º Dom.

* no mês de jun, para o 3º Sab, ele retorna dia 14 e o correto seria dia 21, notei que isso acontece com qualquer dia Exceto Domingo, sempre que o dia 1º é no domingo, no caso de 2014 é só em Junho, mas em 2015 tem Fev, mar, e Nov...

outra dúvida:
* Se eu quiser acrescentar mais dias da semana, ex. Seg, Ter, Qua, Qui, tenho que acrescentar na fórmula, ok? e acredito que tem que ser na mesma ordem obedecendo aquela sequencia 7;6;5;4;3;2;1, onde 7 = Dom, 6 = Sab, 5 = Sex, 4 = Qui, 3 = Qua, 2= Ter e 1= Seg

Tentei fazer com a 1ª Seg e não deu certo (pelo menos não consegui..rsrs) Coloquei na Coluna B "1ª Seg" e acrescentei "Seg" na fórmula e ficou assim "Dom";"Sab";"Sex";"Seg" mas não deu certo e mesmo colocando todos "Dom";"Sab";"Sex";"Qui";"Qua";"Ter";"Seg" tambem não retorna o dia correto :oops: retorna números negativos :?

gtsalikis, desculpe ir postando as dúvidas/problemas aos poucos, mas é conforme vou fazendo os testes.. ;)

Obrigado
Rogerio

 
Postado : 27/10/2014 7:38 am
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

...ninguem?? :oops: :shock:

 
Postado : 28/10/2014 7:23 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Cara, ainda nao consegui achar uma logica que atenda a todos os casos.

Se achar, eu posto aquu.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 29/10/2014 10:08 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Fiz uma nova tentativa, em D3, coloque:

=SE(E(DIREITA($B3;3)="par";ÉIMPAR(MÊS(D$2)));"";SE(ESQUERDA($B3;1)="U";SE(28+(MOD(-DIA.DA.SEMANA(DATA($D$1;MÊS(D$2);FIMMÊS(D$2;0)));8)-CORRESP(EXT.TEXTO($B3;4;3);{"Sab""Sex""Qui""Qua""Ter""Seg""Dom"};0))>DIA(FIMMÊS(D$2;0));(21+MOD(-DIA.DA.SEMANA(DATA($D$1;MÊS(D$2);FIMMÊS(D$2;0)));8))-CORRESP(EXT.TEXTO($B3;4;3);{"Sab""Sex""Qui""Qua""Ter""Seg""Dom"};0);28+MOD(-DIA.DA.SEMANA(DATA($D$1;MÊS(D$2);FIMMÊS(D$2;0)));8)-CORRESP(EXT.TEXTO($B3;4;3);{"Sab""Sex""Qui""Qua""Ter""Seg""Dom"};0));SE(SE(MOD(-DIA.DA.SEMANA(D$2);8)-CORRESP(EXT.TEXTO($B3;4;3);{"Sex""Qui""Qua""Ter""Seg""Dom""Sab"};0)<1;(7+MOD(-DIA.DA.SEMANA(D$2);8))-CORRESP(EXT.TEXTO($B3;4;3);{"Sex""Qui""Qua""Ter""Seg""Dom""Sab"};0);MOD(-DIA.DA.SEMANA(D$2);8)-CORRESP(EXT.TEXTO($B3;4;3);{"Sex""Qui""Qua""Ter""Seg""Dom""Sab"};0))+((ESQUERDA($B3;1)-1)*7)>DIA(FIMMÊS(D$2;0));"";SE(MOD(-DIA.DA.SEMANA(D$2);8)-CORRESP(EXT.TEXTO($B3;4;3);{"Sex""Qui""Qua""Ter""Seg""Dom""Sab"};0)<1;(7+MOD(-DIA.DA.SEMANA(D$2);8))-CORRESP(EXT.TEXTO($B3;4;3);{"Sex""Qui""Qua""Ter""Seg""Dom""Sab"};0);MOD(-DIA.DA.SEMANA(D$2);8)-CORRESP(EXT.TEXTO($B3;4;3);{"Sex""Qui""Qua""Ter""Seg""Dom""Sab"};0))+((ESQUERDA($B3;1)-1)*7))))

Para os casos do último domingo, sábado, etc, use da seguinte forma:

Ul Dom

Veja se deu certo agora.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 29/10/2014 5:18 pm
(@pioli2014)
Posts: 22
Eminent Member
Topic starter
 

gtsalikis,

muito obrigado, funcionou em 99,9% das situações...rsrsrs
só não deu quando é aquela situação de "Ul Seg" nos meses que tem 5 segundas, por exemplo em 2014 ocorre nos meses de mar e jun. A formula retorna a 4ª segunda, mas já esta ótimo, obrigado mesmo.

ahh, eu acrescentei uma outra condição, quando é por exemplo 4º Dom - imp (ímpar) e deu certo. :o
SE(E(DIREITA($C7;3)="imp";ÉPAR(MÊS(H$3)));"";
aténs só tinha para a situação se fosse 4º Dom - par ;)

valeu,
Rogerio

 
Postado : 30/10/2014 8:57 am
Página 1 / 2