Notifications
Clear all

Localizar campo corresnpondente valor repetido

11 Posts
2 Usuários
0 Reactions
1,601 Visualizações
(@fabianaoli)
Posts: 9
Active Member
Topic starter
 

Tenho uma planilha com 03 colunas. A primeira contém um número de controle - Ordem de Serviço. A segunda coluna contém o setor que a ordem de serviço está fisicamente(valores alfanuméricos). A terceira contém datas/horas. Todas as colunas podem apresentar dados iguais. Aí está a questão. Preciso gerar a quarta e a quinta colunas com dados correspondentes. Assim:

1. Quarta coluna: mostra a maior data/hora, referente a cada num de controle. {=SE(A2="";"";SEERRO(MÁXIMO(SE($A$2:$A$10000=A2;$B$2:$B$10000));""))}

2. Quinta coluna: mostra o local referente àquela maior data/hora encontrada. Aqui está o problema. Quando há datas/horas repetidos, a fórmula que estou usando mostra o primeiro local(terceira coluna). Eu preciso que mostre o local correto. =SE(A2="";"";SEERRO(ÍNDICE($C$2:$E$10000;CORRESP(D2;$B$2:$B$10000;0);1);"")).Onde está o erro?

 
Postado : 04/02/2013 4:50 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite Fbiana

Para facilitar anexe um exemplo compactado da tua planilha.

Um abraço.

 
Postado : 04/02/2013 5:22 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

1. Quarta coluna: mostra a maior data/hora, referente a cada num de controle. {=SE(A2="";"";SEERRO(MÁXIMO(SE($A$2:$A$10000=A2;$B$2:$B$10000));""))}

2. Quinta coluna: mostra o local referente àquela maior data/hora encontrada. Aqui está o problema. Quando há datas/horas repetidos, a fórmula que estou usando mostra o primeiro local(terceira coluna). Eu preciso que mostre o local correto. =SE(A2="";"";SEERRO(ÍNDICE($C$2:$E$10000;CORRESP(D2;$B$2:$B$10000;0);1);"")).Onde está o erro?

Fabiana,

Sem postar a plan é meio tiro no escuro... Mas de qq maneira, olhando suas fórmulas acho que seria:

4a col -> {=SE(A2="";"";SEERRO(MÁXIMO(SE($A$2:$A$10000=A2;$C$2:$C$10000));""))}
5a col -> =SE(A2="";"";SEERRO(ÍNDICE($B$2:$D$10000;CORRESP(D2;$C$2:$C$10000;0);1);""))

Mas... Novamente: poste a plan para termos certeza. A sugestão acima está baseada em "achismo".

Abs,

 
Postado : 04/02/2013 6:40 pm
(@fabianaoli)
Posts: 9
Active Member
Topic starter
 

Obrigada pelo retorno. Porém, a fórmula proposta não atendeu. Encontrei uma fórmula que faz o cálculo correto, entretanto é impraticável numa planilha como a minha que possui 2500 linhas com possibilidade de aumentar em média 3000 linhas/ano. Só para gravar, leva horas. O que pode estar ocorrendo
O meu propósito é criar um controle de tramitação em que saibamos em que setor está o determinado documento (pode ser O.S., processo etc). Veja a fórmula completa:
4ª linha {=SE(A2="";"";SE(ÉERROS(MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$2:$A$10000))))-1);"";ÍNDICE($B$2:$B$10000;MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$10000))))-1)))}

5ª linha {=SE(A2="";"";SE(ÉERROS(MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$2:$A$10000))))-1);"";ÍNDICE($C$2:$C$10000;MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$10000))))-1)))}

 
Postado : 05/02/2013 4:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Use VBA, deve te ajudar.

Poste seu arquivo modelo compactado!!

Att

 
Postado : 05/02/2013 5:00 pm
(@fabianaoli)
Posts: 9
Active Member
Topic starter
 

Desculpe, mas não sei como gerar no vba.

 
Postado : 05/02/2013 6:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabiana,

Volatilidade excessiva (desnecessária) na construção da fórmula. Tente trocar na 4a coluna...

{=SE(A2="";"";SE(ÉERROS(MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$2:$A$10000))))-1);"";ÍNDICE($B$2:$B$10000;MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$10000))))-1)))}

por

{=SE(A2="";"";MÁXIMO(SE($A$2:$A$5000=A2;$B$2:$B$5000)))}

...e na quinta coluna:

essa:

{=SE(A2="";"";SE(ÉERROS(MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$2:$A$10000))))-1);"";ÍNDICE($C$2:$C$10000;MAIOR(SE($A$2:$A$10000=A2;LIN($A$2:$A$10000));LIN(INDIRETO("1:"&LINS($A$10000))))-1)))}

por essa:

{=SE(A2="";"";ÍNDICE($C$2:$C$5000;CORRESP(A2&D2;$A$2:$A$5000&$B$2:$B$5000;0)))}

Anexei a plan tb pra vc olhar.

Às vezes (eu disse às vezes) é mais produtivo fixar um intervalo (maior) do que buscar o intervalo dos dados através de fórmulas voláteis. Acho que seu caso pode ser um exemplo.

Me avise pois olhei agora rapidamente e algo pode ter passado.

Abs,

obs: o $5000 (linha máxima base de dados) pode ser modificado para mais ou para menos.

 
Postado : 05/02/2013 9:05 pm
(@fabianaoli)
Posts: 9
Active Member
Topic starter
 

Ótimo! As fórmulas geraram as informações que preciso. Apenas acrescentei o SEERRO à 5a.coluna, porque há campos vazios. Porém, a atualização ainda está lenta já que possuo muitos registros. Leva alguns poucos minutos. Teria uma forma alternativa? Preciso abrir novo pedido para esse novo questionamento?

{=SE(A2="";"";SEERRO(ÍNDICE($C$2:$C$10000;CORRESP(A2&D2;$A$2:$A$10000&$B$2:$B$10000;0);1);""))}

 
Postado : 06/02/2013 3:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Fabiana,

Uma coisa posso te garantir: não são as matriciais que postei que estão interferindo na capacidade de processamento de sua planilha.

Basta ver a performance do meu anexo. Desconfio seriamente que o que está pegando são as conexões existentes com outras fontes externas.

Dá uma olhada nessa cadeia de conexão --> C:FABIANASESEPControle Expedientes - Correspondências1Corresp.xlsx;DefaultDir=C:FABIANASESEPControle Expedientes - Correspondências1;DriverId=1046;MaxBufferSize=2048;PageTimeout=5

Sugiro copiar e colar ou fazer referência direta a esta(s) planilha(s) ao invés de manter a(s) conexão(ões) existente(s).

Avalie direitinho pois tenho quase certeza que é isso.

Qq coisa fala.

Abs,

 
Postado : 06/02/2013 4:08 am
(@fabianaoli)
Posts: 9
Active Member
Topic starter
 

Utilizo o recurso de validação de dados/lista a partir da planilha externa para facilitar a busca do número de controle. Parece que o Validaçao não busca dados de planilha externa, né? Por gentileza, teria alternativa?

 
Postado : 06/02/2013 4:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

E se o calculo fosse feito pelo VBA.
Veja o arquivo modelo:
http://www.sendspace.com/file/pl2kjf
Att

 
Postado : 06/02/2013 7:45 pm