Eu tenho um Planilhas Google onde os produtos são listados como linhas e atributos como colunas. O atributo de cada produto é classificado em uma escala de 1 a 10. Minha última coluna é uma média desses valores (ie =Average(B2:D2)
). Isso funciona bem se cada atributo tiver o mesmo peso.
+--------+-------+-------+-------+---------+
| | Attr1 | Attr2 | Attr3 | Overall |
+--------+-------+-------+-------+---------+
| Prod 1 | 10 | 8 | 9 | 9 |
| Prod 2 | 2 | 10 | 7 | 6.33 |
| Prod 3 | 4 | 6 | 6 | 5.33 |
+--------+-------+-------+-------+---------+
O problema é que eu quero que cada atributo tenha um peso diferente. Por exemplo, Attr1 pode não ser importante e deve valer apenas 50%, enquanto Attr3 é muito importante e deve valer 300%.
+--------+-------------+-------+--------------+---------+
| | Attr1 (50%) | Attr2 | Attr3 (300%) | Overall |
+--------+-------------+-------+--------------+---------+
| Prod 1 | 10 | 8 | 9 | 8.89 |
| Prod 2 | 2 | 10 | 7 | 7.11 |
| Prod 3 | 4 | 6 | 6 | 5.78 |
+--------+-------------+-------+--------------+---------+
O valor para a primeira linha seria:
(10*0.5 + 8*1 + 9*3) / (0.5+1+3) = 8.89
que pode ser calculado usando:
(
B2*(IFERROR(REGEXEXTRACT(B1, "\d+"), 100)/100)
+ C2*(IFERROR(REGEXEXTRACT(C1, "\d+"), 100)/100)
+ D2*(IFERROR(REGEXEXTRACT(D1, "\d+"), 100)/100)
) / (
IFERROR(REGEXEXTRACT(B1, "\d+"), 100)/100
+ IFERROR(REGEXEXTRACT(C1, "\d+"), 100)/100
+ IFERROR(REGEXEXTRACT(D1, "\d+"), 100)/100
)
que, como você pode ver, pode se tornar muito difícil de gerenciar à medida que mais atributos são adicionados. Idealmente, estou procurando uma solução que não exija a criação de células temporárias para ajudar nos cálculos.
Existe alguma função interna ou uma convenção comum que possa me ajudar a calcular essas médias ponderadas?
fonte
$
significam os sinais?dollar sign in excel
procurar no Google em geral pela mesma coisa, já que encontrará mais documentação para isso.sumproduct
Se seus pesos estão na linha 2 de B a L e os dados que você deseja calcular em média estão nas linhas 3 e superiores, digamos, você pode usar sumproduct da seguinte maneira:
fonte
O Google parecia ter escutado. Pelo menos na minha instância do Planilhas Google, a função
AVERAGE.WEIGHTED
existe. Pela ajuda:fonte
O código de Lipis não estava funcionando para mim, então aqui está uma atualização. Este código:
funciona com a versão atual das planilhas do Google, abordando corretamente os elementos da matriz
verifica se os valores são números
tem uma opção para considerar valores zero ou não
Código:
fonte
Corrigindo o código da Lipis para funcionar na versão atual das planilhas do Google:
fonte
#NUM!
como resultado. O código que Lipis criou ainda funciona. Você está ignorando apenas o 2d-array que está sendo retornado.ARRAYFORMULA () pode calcular uma média ponderada nas planilhas do Google (e mais).
Armazenar os pesos separadamente em B2: D2 simplifica a leitura da fórmula. O cálculo da média ponderada do E3 é semelhante ao SUMPRODUCT () acima (copiar / colar para o E4 e E5):
=ARRAYFORMULA(sum(B3:D3 * $B$2:$D$2)/sum($B$2:$D$2))
Usar RegExExtract () para obter pesos de $ B $ 1: $ D $ 1 é uma alteração simples na ARRAYFORMULA (). Substitua o intervalo simples pela expressão mais complexa "
iferror(regexextract($B$1:$D$1,"\d+"),100)/100
" e a fórmula para E3 se torna (copiar / colar para E4 e E5):=ARRAYFORMULA(sum(B3:D3 * iferror(regexextract($B$1:$D$1,"\d+"),100)/100)/sum(iferror(regexextract($B$1:$D$1,"\d+"),100)/100))
NB Esse regexp requer nomes de atributos sem números; então, use AttrA, AttrB e AttrC em vez de Attr1, Attr2 e Attr3.
fonte
Depois de ler sua pergunta com cuidado,
Eu vim com esta solução, que não usa células temporárias.
Fórmula
Captura de tela
Explicado
Ele
REGEXEXTRACT
extrairá o valor no cabeçalho após o primeiro colchete eVALUE
o converterá em um número. EleIFERROR
definirá o valor como100
se nada for encontrado eARRAYFORMULA
permitirá selecionar um intervalo, em vez de células individuais.Exemplo
Criei um arquivo de exemplo para você: como calcular médias ponderadas nas planilhas do Google?
fonte
Como a resposta aceita está usando o Script do Google Apps, também criei um pequeno trecho.
Código
Captura de tela
Nota
O script seguirá a mesma lógica apresentada nesta postagem. A principal vantagem é que ele calculará os valores gerais de uma só vez.
Exemplo
Criei um arquivo de exemplo para você: como calcular médias ponderadas nas planilhas do Google?
fonte
Para médias ponderadas simples , você pode adicionar o valor da célula várias vezes. Como se você deseja que A1 seja 75% e B1 seja 25%, você pode inserir
=AVERAGE (A1,A1,A1,B1)
. Tão especificamente para o seu, seria=AVERAGE (B2,C2,C2,D1,D2,D2,D2,D2,D2,D2)
, o que pesaria B2 como metade de C2 (50%) e D2 como 3x C2 (300%).Coisas mais complicadas estão acima da minha nota de pagamento. :)
fonte
Na verdade, ambas as versões Average.weighted e sumproduct oferecem o mesmo resultado:
Por isso, prefiro usar o primeiro, já que é muito mais simples de lidar, mas não sei como adicionar outros pesos a essa fórmula.
Esta é a dica de ferramenta, mas não sabe como adicionar apenas pesos e não valores adicionais
fonte
Existe uma maneira bastante simples de usar apenas determinadas funções.
onde E conteúdo é o número de pontos e G a importância desses pontos.
fonte