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.
  • Avatar do usuário
#63809
Gente,estou tentanto fazer a mesma celula me mostrar se o valor que eu quero saber esta dentro de um range de valores(EX:0 ate 0,5 ou 0 até -0,5),porem quando coloco valores negativos na matriz, mesmo assim ele so retorna os valores positivo, os negativos da erro.
Queria usar tambem a função SE para me retornar o nome do que eu preciso.
#63811
boa noite ! achei um pouco confusa sua descrição, mande em anexo o que vc fez, mostre na planilha onde está errado e como vc espera que fique, ajuda no nosso entendimento.
obrigado.
#63829
Desculpa, mas acho que agora tenho certeza absoluta que não entendi nada :mrgreen: :mrgreen: :mrgreen:

Manda uma planilha anexa, e colca um exemplo do que tem que acontecer, sem fórmula alguma mesmo, digita o valor que vc espera com base nos dados da sua planilha, se possível incluir descricao dos campos.

veja anexo os exemplos de pessoas que pediram ajuda no forum, eles documentaram claramente o que precisa ser feito e foi fácil ajudar.
Você não está autorizado a ver ou baixar esse anexo.
#63926
veja como ficou a planilha em anexo pra ver se eu entendi mesmo.

primeiro, tem que fazer alguns ajustes na sua planilha, vc não pode comparar numeros se colocar ' nas frente como estava na sua faixa de valores, tem que deixar sem as ' para ser tratado como número.

Depois, seus valores negativos estavam ao contrário ( demorei muito para perceber isso :mrgreen: )

eu juntei as duas tabelas numa so para facilitar as fórmulas, estão na AB a partir da linha 7 e por útlimo e não menos importante, quando vc tem faixa de valores, vc precisa decidir o que quer fazer quando seu valor está no limite da faixa, no caso aqui eu deixe ele no valor superior.
então se for -0,25 que poderia ser fav4 ou iguais, eu deixei como fav4 ( usei <= na comparação ) , precisa ficar atento a esse detalhe nas suas fórmulas quando trabalha com faixa.



Fiz de duas maneiras diferentes, somente com fórmulas e outra que mistura fórmula e VBA.

Já vou adiantando que não conheço as melhores técnicas, então talvez esteja usando a técnica errada, mas acredito que deu certo;

Se entendi bem, vc quer colocar dois times nas colunas AF e AG e que ele veja o confronto deles, uma coisa importante, estou supondo que os times se enfrentaram apenas uma vez e nessa ordem de colunas ( acredito que a ordem das colunas seja isso, jogo em casa e fora de casa )

Vou explicar como fiz com o pontos FT e vc faz com o resto, ok ?

O primeiro passo é encontrar qual linha da tabela operar tem esses dois times, para a fórmula ficar organizada e não ficar gigante, eu criei colunas auxiliares a partir da AR, na Operar AR eu uso primeiro um SES que verificam se o time da AF está na coluna C4 e o time da AG está na D4, esse primeiro iif retorna um array assim :
{ 1 , 0 , 0 , 0 , 0 } cada valor corresponde a uma linha da sua tabela operar, em seguida, e pego esse array e múltiplico pela coluna do COEF e somo os resultados da multiplicacao ( é isso que faz o somarproduto )
no exemplo da planilha ficaria algo assi m:
{1*-1 + 0*0,6 .... } = -1

agora tenho que descubrir qual é o valor desse -1 . O jeito que eu prefiro é com VBA, pois é muito mais fácil de entender , veja a célula AH5, simplesmente chamo a função que criei e passo o valor da célula e a função é bem simples, é um conjunto de if com base a sua faixa de valores :

Public Function uf_titulo(ByVal numero As Double) As String

If numero <= -0.9 Then
uf_titulo = "fava1"
ElseIf numero <= -0.75 Then
uf_titulo = "fava2"
ElseIf numero <= -0.5 Then
uf_titulo = "fava3"
ElseIf numero <= -0.25 Then
uf_titulo = "fava4"
ElseIf numero <= 0.25 Then
uf_titulo = "iguais"
ElseIf numero <= 0.5 Then
uf_titulo = "fafh4"
ElseIf numero <= 0.75 Then
uf_titulo = "favh3"
ElseIf numero <= 0.9 Then
uf_titulo = "favh2"
Else
uf_titulo = "favh1"
End If

End Function

Eu costumo iniciar o nome uf para minhas "user function" .

Se não quiser fazer com VBA, pode usar um truque para encontrar o valor sem um monte de ifs.
Primeiro cria uma coluna auxiliar com o número da linha ( coluna AB )
Depois, parecido com o somar produto anterior, mas diferente, a diferença é que no anterior queriamos valores exatamente iguais ao nome do time, agora queremos valores > que o limite inferior da faixa e menor igual ao limite superior da faixa, por isso daria errado fazer daquele jeito.
Neste caso de faixa de valores, o que tem que ser feito é uma múltiplicacao dos vetores :
=SOMARPRODUTO($AB$7:$AB$15;(SES($AC$7:$AC$15<AR4;1;1;0)*SES(AD7:AD15>=AR4;1;1;0)))

Dica que acabei de aprender, aperta F2 na fórmula, seleciona um trecho da fórmula e aperta F9, ele mostra o resultado parcial !!! , fiz isso abaixo com os dois SES

=SOMARPRODUTO($AB$7:$AB$15;({1;0;0;0;0;0;0;0;0}*{1;1;1;1;1;1;1;1;1}))

Repara que se eu não multiplicar os dois arrays e no lugar colocar num único SES como no exemplo dos times, vai dar tudo 1, e vai somar errado, pois a gente quer que somente uma linha de 1 e o resto zero. Conseguimos isso múltiplicando os dois arrays e por último múliplicamos pelo número da linha.

agora com o número da linha ficou "fácil", veja a fórmula da célula AT4, vc pode usar a função índice que procura um valor de uma célula dado o range de células, a linha ( que pegamos no passo anterior ) e a coluna, que no nosso caso é fixa.

Mas como disse, eu prefiro usar uma função de VBA quando os valores das faixas são fixos e bem definidos como é o seu caso.

Espero que eu tenha entendido o que vc precisa !
Você não está autorizado a ver ou baixar esse anexo.
#64144
Ai brother, deu um probleminha, ele da certo enquanto sao poucos dados, so que eu preciso em muittooos dados. dai eu coloquei esse anexo aqui que tem mais dados pra você ver como fico os numeros.é exatamente a mesma coisa que eu preciso. so que ele não ta me retornando o numero do coef ele ta fazendo uma soma ou multiplicação sei la, não ta dando o numero certo.
Você não está autorizado a ver ou baixar esse anexo.
#64153
bom dia @davizinhoinho , acho que o correto, no lugar de fazer o ses, seria multiplicar dois Se, pois a gente quer a linha em que coincide a primeira e a segunda linha , ficaria algo assim
=SOMARPRODUTO(SE(OPERAR!$D$6:$D$70=tese!J2;1;0)*SE(OPERAR!$E$6:$E$70=tese!K2;1;0);OPERAR!$K$6:$K$70)
tem em anexo para vc ver.
Você não está autorizado a ver ou baixar esse anexo.
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