Olá Tenório,
Você agradeceu sim! Clicou no sinal de positivo, e isso é um agradecimento.
Vamos ver a fórmula.
Inicio colocando aqui o link do tópico inicial, para o caso de alguém resolver acompanhar.
http://gurudoexcel.com/forum/viewtopic.php?f=9&t=10525
Primeiro vamos entender que a fórmula é matricial, ou seja, retorna uma matriz (ou vetor) de valores, e não apenas 1 valor como as funções tradicionais (não matriciais).
As partes que geram matrizes são
(E2:N2) e
(E3:N3). Por exemplo, E2:N2, gera uma matriz cujo primeiro elemento é E2, o segundo F2, o terceiro G2, ..., e o décimo e último é N2. Essa é a matriz base. Fica: E2, F2, G2, H2, I2, J2, K2, L2, M2, N2
Vou tentar explicar isto:
CONT.VALORES(E2:N2)-COL(E2:N2)+COL($E2)
Ao aplicar
-COL (note que é negativo) na matriz base
E2:N2, a matriz passa a refletir não mais o valor da célula, mas sim o número da coluna. Assim, E2 passa a ser -5, pois E é a quinda coluna, F passa a ser -6, ..., N passa a ser -14. Fica: -5, -6, -7, -8, -9, -10, -11, -12, -13, -14
Depois
COL($E2) , que aponta para a primeira coluna de horários (o imediato), e que representa 5 (E é a quinta coluna), é somado à essa matriz. Então a matriz passa a ter: zero na primeira posição (era -5, mas após somar 5 passou a ser zero), -1 na segunda (-6 + 5), ... e -9 na última (-14+5). Fica: 0, -1, -2, -3, -4, -5, -6, -7, -8, -9 . O objetivo disso é obter sempre a mesma matriz, mesmo que todos os dados estejam em outras colunas da planilha, como por exemplo, BT. Ou seja, mesmo que você insira diversas colunas novas antes da coluna de média, o que deslocaria a média e seus dados para colunas bem mais a direita, a função continua a funcionar e esta matriz sempre será 0, -1, -2, -3, -4, -5, -6, -7, -8, -9.
Depois
CONT.VALORES(E2:N2) , que representa 6 (é a quantidade de horários preenchidos entre E2 e N2), é somado à essa matriz. Então a matriz passa a ter: 6 na primeira posição (6 - zero), 5 na segunda (6 -1), 4 na terceira (6 -2), ... e -3 na última (6-9). Fica: 6, 5, 4, 3, 2, 1, 0, -1, -2, -3. Está formada a matriz dos pesos para as ponderações.
A ordem de somas e subtrações que mostrei acima não é bem essa, mas como na soma e subtração a propriedade comutativa vale, a ordem não altera o resultado. Na ordem que expliquei é mais fácil entender.
Agora essa matriz é multiplicada pela matriz gerada por
E3:N3. Não é uma multiplicação de matrizes como reza a matemática. É uma multiplicação mais simples: o primeiro elemento de uma pelo primeiro da segunda, o quinto pelo quinto, etc, ou seja, o n-ésimo de uma pelo n-ésimo da segunda.
Fica: 6, 5, 4, 3, 2, 1, 0, -1, -2, -3
vezes: 10, 9, 8, 6, 4, 2, 0, 0, 0, 0
igual: 60, 45, 32, 18, 8, 2, 0, 0, 0, 0
A função Somarproduto, soma tudo isso e já temos o nominador da fração que resultará na média ponderada: 165.
No denominador montamos novamente a matriz de pesos, e somamos esses pesos. Na matriz de pesos que montamos há pouco (6, 5, 4, 3, 2, 1, 0, -1, -2, -3) os valores negativos não nos incomodaram, pois ao serem multiplicados pelos zeros da segunda matriz, eles sumiram e não interferiram na soma.
Agora é diferente. Se somarmos os valores da matriz de pesos, os negativos serão indesejáveis. Então, para resolver o problema, multiplicamos eles pela matriz
(E2:N2<>""), que terá 10 elementos, sendo eles apenas zeros e uns. Para as células diferentes de vazio, resultará 1, e para as iguais a vazio, retornará 0. Como os zeros corresponderão às colunas de horários não preenchidas, e os valores negativos também, os negativos serão multiplicados por zero, e os demais não, resultando a matriz 6, 5, 4, 3, 2, 1, 0, 0, 0, 0. Somando isso (novamente a função Somarproduto) resulta no valor de 21.
A função Somarproduto multiplica seus parâmetros e os soma. Na fórmula que estamos analisando, ele não multiplica nada porque tudo o que está entre seus parêntesis é apenas 1 parâmetro. Estamos fazendo as multiplicações pelo sinal de multiplicação (asterisco), e não pela Somarproduto, logo, estamos apenas usando a característica de soma dela.
Porque não usamos então a função SOMA? Porque para a SOMA somar as matrizes que montamos, ela deve ser encerrada não com ENTER, mas com SHIFT+CTRL+ENTER, para informar ao SOMA que ele deve somar a matriz. Já para o Somarproduto, somar matrizes é natural, possibilitando trabalhar com matrizes sem encerrar com SHIFT+CTRL+ENTER.
Apenas para ilustrar, podemos alterar um pouco a fórmula, e não mais multiplicar as matrizes por asterisco. Vamos deixar o SOMARPRODUTO fazer essa multiplicação. Basta colocar as duas matrizes finais, cada uma como um parâmetro da função. Em vez de usar o asterisco para multiplicar, apenas coloca-se um ponto e vírgula, que é quem separa os parâmetros das funções.
=SOMARPRODUTO(E3:N3 ; (CONT.VALORES(E2:N2)-COL(E2:N2)+COL($E2)))/SOMARPRODUTO((CONT.VALORES(E2:N2)-COL(E2:N2)+COL($E2)) ;-- (E2:N2<>""))
Se tiver alguma dúvida sobre o funcionamento, pode perguntar.
Jimmy San Juan
Nas mensagens que te ajudaram de alguma forma, dê seu LIKE: clique no "positivo" (ícone OBRIGADO).
Se o problema está encerrado, por favor, clique em MARCAR RESOLVIDO.