Notifications
Clear all

Fórmula matricial x Arquivo Lento

9 Posts
1 Usuários
0 Reactions
961 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,
Este fórum é uma escola, quando cheguei aqui sabia fazer procv e proch e hj já utilizo fórmulas matricias e VBA nas planilhas

Bem o desafio que me peguei e acho que muito de vcs enfrentam é utilizar fórmulas matricias para ranges muito grandes o meu por exemplo tem 7k linhas

Eu preciso que escolhendo uma categoria ele me traga pelo meno o tipo de permissão, posso até fixar as categoriais por sempre serem as mesmas, mas coloca a matriz está em 110 linhas o arquivo fica uma carroça

Eu já desativei o salvamento automático, já salvei em xlsb, alguém consegue me ajudar?

O arquivo tá pequeno em tamanho, mas o processamento ...

[]s

VHdoCavaco

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

 
Postado : 09/08/2011 7:13 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

VH, deleta a matricial, reupa a planilha e me manda a matricial como texto aqui no fórum, pois o pc aqui do serviço não é tão bom... chegou a travar a planilha...

hahahahhah

as vezes tem como a gente contornar isso e fazer com fórmulas diferentes..

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

 
Postado : 09/08/2011 7:31 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Gde Bernardo

Feito

Removi a matricial

Cara minha máquina é um core 2 duo com 4 GB e demnora 2 minutos pra processar cada mudança

Vamos as regras

Eu escolho uma política

Ele lista as categorias e sub-categorias (como sempre são as mesma posso fixar os valores)

Agora a mágica está na coluna permissão porque pra cada política funciona diferente por isso usei a matricial mas são 110 linhas entre categorias e subcategorias

[]s

VH

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

 
Postado : 09/08/2011 8:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Foi mal não postei a matricial, usei na range E7:E116

E4 que ele referencia é uma Lista de Validação!

{=SE($E$4="";"";(SE(ÉERROS(MENOR(SE('DataBase 15-07-2011'!$A$2:$E$7151=$E$4;LIN('DataBase 15-07-2011'!$A$2:$E$7151));LIN(INDIRETO("1:"&LINS('DataBase 15-07-2011'!$A$2:$E$7151))))-1);"";ÍNDICE('DataBase 15-07-2011'!$B$2:$B$7151;MENOR(SE('DataBase 15-07-2011'!$A$2:$E$7151=$E$4;LIN('DataBase 15-07-2011'!$A$2:$E$7151));LIN(INDIRETO("1:"&LINS('DataBase 15-07-2011'!$A$2:$E$7151))))-1))))}

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

 
Postado : 09/08/2011 8:28 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

vh, pelo que pude notar, o intervalo E7:E116 é fixo.
e também na planilha 'DataBase 15-07-2011' ficam todos agrupados e sempre na mesma ordem.
Se for isso, a SEM matricial serve (e é muito mais rápida), senão da uma olhada na COM matricial.

Qualquer coisa da o grito...

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

 
Postado : 09/08/2011 10:53 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Cara ficou ótimo e bem rápido

Inclusive o data base sempre será de 7k de linhas

Minha matricial tava muito carregada? Vc chegou a avaliá-la?

[]s

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

 
Postado : 09/08/2011 11:01 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

vh, analisei sim, sua matricial está analizando 35.755 células, pois o intervalo é de linhas e colunas. Por isso a demora.
'DataBase 15-07-2011'!$A$2:$E$7151 invez de 'DataBase 15-07-2011'!$A$2:$A$7151

O erro mesmo está no finalzinho:
{=SE($E$4="";"";(SE(ÉERROS(MENOR(SE('DataBase 15-07-2011'!$A$2:$E$7151=$E$4;LIN('DataBase 15-07-2011'!$A$2:$E$7151));LIN(INDIRETO("1:"&LINS('DataBase 15-07-2011'!$A$2:$E$7151))))-1);"";ÍNDICE('DataBase 15-07-2011'!$B$2:$B$7151;MENOR(SE('DataBase 15-07-2011'!$A$2:$E$7151=$E$4;LIN('DataBase 15-07-2011'!$A$2:$E$7151));LIN(INDIRETO("1:"&LINS('DataBase 15-07-2011'!$A$2:$E$7151))))-1))))}

pode deixar assim:
=SE($E$4="";"";(SE(ÉERROS(MENOR(SE('DataBase 15-07-2011'!$A$2:$A$7151=$E$4;LIN('DataBase 15-07-2011'!$A$2:$A$7151));LIN()-6)-1);"";ÍNDICE('DataBase 15-07-2011'!$D$2:$D$7151;MENOR(SE('DataBase 15-07-2011'!$A$2:$A$7151=$E$4;LIN('DataBase 15-07-2011'!$A$2:$A$7151));LIN()-6)-1))))

daí vai funcionar também...

só que usei outra pois achei mais enxuta e mais rápida no cálculo.

Qualquer coisa da o grito...

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

 
Postado : 09/08/2011 3:01 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Gracias!

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

 
Postado : 09/08/2011 3:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

;)

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

 
Postado : 09/08/2011 4:15 pm