Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Dúvidas sobre cálculos, funções simples e aninhadas, fórmulas matriciais, etc.
Por Leonardo1234
Posts
#58808
Olá Pessoal,

Eu tenho uma planilha onde eu inseri regras com formulas matriciais dentro de uma validação de dados. Meu problema é que, não sei por qual motivo, as regras param de funcionar. Eu já reparei que quando isso acontece, e eu entro de novo na caixa de validação de dados e simplesmente dou um ok, sem nem mexer na formula, a validação volta a funcionar, porém por algum motivo depois de testadas algumas vezes, as regras passam a não funcionar novamente. Na coluna U, eu destaquei em amarelo, duas células que possuem as mesmas regras, na primeira ela está funcionando, e na segunda não. Lembrando que na primeira só está funcionando momentaneamente, o mesmo problema também acontece com ela. Agradeço se alguém conseguir me ajudar. Obrigado.
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#58811
A sua validação não está correta, pois você usou uma comparação matricial dentro da função E.
Outra coisa, use os objetos Tabela para deixar os intervalor dinâmicos. Eu fiz isso e exclui todas formatações desnecessárias e validações de dados até a última linha da planilha.
Criei um nome chamado Validarkm com a seguinte fórmula:
Código: Selecionar todos
=(SOMARPRODUTO((Base!U2<>Tabela1[Km na Origem])*(Base!U2<>Tabela1[[Km no Destino ]]))=0)*(Base!U2>=MÍNIMOA(SE(Tabela1[Placa]=Base!S2;SE(Tabela1[Km na Origem]=Base!V2;SE(Tabela1[[Km no Destino ]]=Base!W2;Tabela1[Km na Origem])))))*(Base!U2<=MÁXIMOA(SE(Tabela1[Placa]=Base!S2;SE(Tabela1[Km na Origem]=Base!V2;SE(Tabela1[[Km no Destino ]]=Base!W2;Tabela1[[Km no Destino ]])))))
Veja se atende. Se não for o correto, posso tentar alterar baseado nas regras que você passar.
Você não está autorizado a ver ou baixar esse anexo.
Por Leonardo1234
Posts
#58814
OLá Babdallas, agradeço a ajuda, mas aparentemente, agora está funcionando no modo antigo. Eu notei que havia um erro na formula e agora está corrigido. Ela está funcionando mesmo sendo matricial e usando o E, ficou assim: E(U2<>$F$2:$F$100000;U2<>$I$2:$I$100000;U2>=MÍNIMOA(SE($C$2:$C$100000=S2;$F$2:$F$100000));U2<=MÁXIMOA(SE($C$2:$C$100000=S2;$I$2:$I$100000))). Mesmo assim agradeço a ajuda. Obrigado.
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#58815
Veja esta comparação:
Código: Selecionar todos
U2<>$F$2:$F$100000
Nesta você está comparando a célula U2 com a coluna F, da linha 2 até a 100.000. Para a performance da sua planilha, não é recomendável você comparar uma célula com muitas outras que estarão vazias. Para isos serve o objeto Tabela, para que somente tenha o limite onde possui dados. Outra forma seria montar intervalos dinâmicos no Gerenciador de Nomes para lidar com isso.
Segundo ponto é que esta comparação está gerando um monte de VERDADEIRO e FALSO. Porém, você precisa somar os verdadeiros e falsos para verificar se todos são diferentes da coluna F. A função E não faz isso para você. Neste caso você pode usar a SOMARPRODUTO ou CONT.SE para agregar este valor, verificando se todas as células da coluna F são diferentes de U2. Do jeito que está, a função E vai apenas usar a primeira comparação de U2 com F2.
O mesmo ocorre na comparação
Código: Selecionar todos
U2<>$I$2:$I$100000
Por Leonardo1234
Posts
#58820
Sim, de fato não está funcionando para a coluna toda. Eu testei aqui sua planilha, porém deve ter algum erro na formula, que ela não está funcionando. Eu preciso que o KM seja diferente de qualquer valor das colunas E e I, e eu preciso que ele seja maior do que o menor valor da coluna E correspondente a placa da coluna S comparada com as placas do intervalo da coluna C e mesma coisa com a coluna I, porém no caso tem que ser menor do que o maior valor da coluna. Eu testei essa formula aqui, porém ela também não esta dando certo. SOMARPRODUTO((Base!U2<>Tabela1[Km na Origem])*(Base!U2<>Tabela1[[Km no Destino ]])*(Base!U2>=MÍNIMOA(SE(Tabela1[Placa]=Base!S2;Tabela1[Km na Origem])))*(Base!U2<=MÁXIMOA(SE(Tabela1[Placa]=Base!S2;Tabela1[[Km no Destino ]])))). Consegue ajudar?
Por babdallas
#58825
Código: Selecionar todos
(CONT.SE(Tabela1[Km na Origem];"="&Base!U2)=0)*(CONT.SE(Tabela1[Km no Destino];"="&Base!U2)=0)*(Base!U2>=SEERRO(AGREGAR(15;6;Tabela1[Km na Origem]/((Tabela1[Placa]=Base!S2));1);0))*(Base!U2<=SEERRO(AGREGAR(14;6;Tabela1[Km na Origem]/((Tabela1[Placa]=Base!S2));1);0))
Você não está autorizado a ver ou baixar esse anexo.
Por Leonardo1234
Posts
#58826
Está funcionando, porém quando altera a placa na tabela de base, ele não ta funcionando. Estou tentando colocar o valor 280 nesse novo cenário e não esta indo.
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#58909
Se um tópico está criado, você não deve criar outro só para apressar a sua resposta. Por favor, leia as regras do fórum.

Quanto ao seu problema, veja se esta correção resolve:
Código: Selecionar todos
=(CONT.SE(Tabela1[Km na Origem];"="&Base!Y10)=0)*(CONT.SE(Tabela1[Km no Destino];"="&Base!Y10)=0)*(Base!Y10>=SEERRO(AGREGAR(15;6;Tabela1[Km na Origem]/((Tabela1[Placa]=Base!W10));1);0))*(Base!Y10<=SEERRO(AGREGAR(14;6;Tabela1[Km no Destino]/((Tabela1[Placa]=Base!W10));1);0))
Caso não seja, explique um pouco melhor cada condição que deve ser atendida. Quais colunas devem ser usadas em cada condição.
Você não está autorizado a ver ou baixar esse anexo.
Por Leonardo1234
Posts
#58914
Olá BabDallas, desculpe ter criado outro tópico, pois eu percebi que nós acabamos focando nas correções das fórmulas e que de fato estavam equivocadas, como o exemplo da aplicação de uma regra matricial na fórmula E, porém mesmo com as fórmulas corrigidas, meu problema original que é a validação funcionar em um primeiro momento e depois parar de funcionar quando a planilha é fechada e aberta novamente, persiste e na verdade, era isso exatamente que eu queria entender o porquê está acontecendo. Eu vou te encaminhar uma nova planilha, pois eu criei uma nova fórmula, inclusive mais simples que as anteriores, mas que possui regras mais completas. Vou explicar as regras dessa nova fórmula para ficar mais fácil de entender. O que eu preciso é que o número da linha da coluna F, onde é encontrado o maior dos valores que estão abaixo que o valor de referência da célula da coluna U seja igual ao número da linha onde é encontrado o menor dos valores que estão acima do mesmo valor de referência da célula da coluna U e as duas regras só valem onde as placas da coluna C forem iguais a placa da coluna T testada. Se essa condição for verdadeira, ou seja, o número das linhas for igual, o valor pode ser inserido, se não, ele é bloqueado. Eu testei a validação com essa formula de duas formas, uma criando um nome de referência com a fórmula como você mostrou e o aplicando na validação e nesse caso, não funcionou de nenhuma forma tendo um resultado no qual qualquer valor pode ser inserido, como se a validação não estivesse presente e na segunda forma, eu inseri a formula de forma direta na validação, com intervalos até a célula 1000, e nesse caso, a validação funciona, porém após a planilha ser aberta e fechada ela não funciona mais. Enfim, é isso, vou apagar o outro tópico e agradeço se você conseguir me ajudar nessa questão e entender quais são as falhas que estou cometendo nessas duas formas de aplicação da fórmula na validação. Enfim, agradeço a ajuda e novamente desculpe pela abertura do outro tópico, vou apagá-lo.
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#58916
Veja isso
Código: Selecionar todos
AGREGAR(15;6;LIN($I$2:$I$100008)/(($I$2:$I$100008>$V2)*($C$2:$C$100008=$T2));1)=AGREGAR(14;6;LIN($F$2:$F$100008)/(($F$2:$F$100008<$V2)*($C$2:$C$100008=$T2));1)
Você não está autorizado a ver ou baixar esse anexo.
Por Leonardo1234
Posts
#58919
Não está funcionando, vou te mandar a planilha com alguns valores que ele não deveria permitir e está permitindo.
Você não está autorizado a ver ou baixar esse anexo.
Por babdallas
#58921
Espero que agora esteja correto.
Você não está autorizado a ver ou baixar esse anexo.
Por Leonardo1234
Posts
#58923
Cara, muito obrigado, agora está funcionando perfeitamente. Só me tira uma duvida, na formula anterior que eu estava utilizando, a ela também funcionava, porém ela parava de funcionar quando eu fechava e abria a planilha novamente. Você saberia dizer se é por que é uma formula matricial que isso estava acontecendo ou tem outro motivo? E se não for pedir muito, você consegue explicar a lógica que você usou nessa nova fórmula? Novamente muito obrigado e desculpa qualquer coisa.
Por babdallas
#58926
As funções AGREGAR estão pegando a menor (parâmetro15 na função AGREGAR) e a maior (parâmetro 14 na função AGREGAR) linha que atendem aquelas condições que você passou. Caso os limites não atendam, retornam erro. No caso de erro, usei a função SEERRO para retornar valor zero.

Quanto à fórmula que você tinha feito, funcionava às vezes e depois que fechava e abria e não funcionava mais, não sei dizer. Precisaria avaliar com calma a fórmula e avaliar se houve alguma mudança após abrir o arquivo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord