Ich besitze ein Google-Blatt, in dem Produkte als Zeilen und Attribute als Spalten aufgeführt sind. Die Attribute jedes Produkts werden auf einer Skala von 1 bis 10 bewertet. Meine letzte Spalte ist ein Durchschnitt dieser Werte (dh =Average(B2:D2)
). Dies funktioniert gut, wenn jedes Attribut das gleiche Gewicht hat.
+--------+-------+-------+-------+---------+
| | Attr1 | Attr2 | Attr3 | Overall |
+--------+-------+-------+-------+---------+
| Prod 1 | 10 | 8 | 9 | 9 |
| Prod 2 | 2 | 10 | 7 | 6.33 |
| Prod 3 | 4 | 6 | 6 | 5.33 |
+--------+-------+-------+-------+---------+
Das Problem ist, dass jedes Attribut ein anderes Gewicht haben soll. Beispielsweise ist Attr1 möglicherweise nicht wichtig und sollte nur 50% wert sein, während Attr3 sehr wichtig ist und 300% wert sein sollte.
+--------+-------------+-------+--------------+---------+
| | 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 |
+--------+-------------+-------+--------------+---------+
Der Wert für die erste Zeile wäre:
(10*0.5 + 8*1 + 9*3) / (0.5+1+3) = 8.89
das könnte berechnet werden mit:
(
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
)
Wie Sie sehen, kann die Verwaltung sehr schwierig werden, wenn weitere Attribute hinzugefügt werden. Idealerweise suche ich nach einer Lösung, bei der keine temporären Zellen für die Berechnungen erstellt werden müssen.
Gibt es eine eingebaute Funktion oder eine gemeinsame Konvention, mit deren Hilfe ich diese gewichteten Durchschnittswerte berechnen kann?
quelle
$
Zeichen?dollar sign in excel
das gleiche, da Sie mehr Dokumentation dafür finden.sumproduct
Wenn sich Ihre Gewichte in Zeile 2 von B bis L befinden und die Daten, die Sie mitteln möchten, beispielsweise in Zeilen 3 und höher sind, können Sie sumproduct wie folgt verwenden:
quelle
Google schien zugehört zu haben. Zumindest in meiner Instanz von Google Sheets ist die Funktion
AVERAGE.WEIGHTED
vorhanden. Per der Hilfe:quelle
Der Code von Lipis hat bei mir nicht funktioniert, daher hier ein Update. Dieser Code:
Funktioniert mit der aktuellen Version von Google Spreadsheets und adressiert Array-Elemente korrekt
prüft, ob die Werte Zahlen sind
hat einen Schalter, um Nullwerte zu berücksichtigen oder nicht
Code:
quelle
Korrektur des Lipis-Codes für die aktuelle Version von Google Spreadsheets:
quelle
#NUM!
als Ergebnis. Der Code, den Lipis gemacht hat, funktioniert immer noch. Sie ignorieren nur das zurückgegebene 2d-Array.ARRAYFORMULA () kann einen gewichteten Durchschnitt in Google Spreadsheets (und mehr) berechnen .
Das separate Speichern der Gewichte in B2: D2 vereinfacht das Lesen der Formel. Die Berechnung des gewichteten Durchschnitts für E3 sieht dann ähnlich aus wie oben mit SUMPRODUCT () (Kopieren / Einfügen für E4 & E5):
=ARRAYFORMULA(sum(B3:D3 * $B$2:$D$2)/sum($B$2:$D$2))
Die Verwendung von RegExExtract (), um die Gewichte von $ B $ 1 zu erhalten: $ D $ 1 ist eine einfache Änderung in der ARRAYFORMULA (). Ersetzen Sie den einfachen Bereich durch den komplexeren Ausdruck "
iferror(regexextract($B$1:$D$1,"\d+"),100)/100
" und die Formel für E3 wird (Kopieren / Einfügen für E4 & E5):=ARRAYFORMULA(sum(B3:D3 * iferror(regexextract($B$1:$D$1,"\d+"),100)/100)/sum(iferror(regexextract($B$1:$D$1,"\d+"),100)/100))
Hinweis: Für diesen regulären Ausdruck sind Attributnamen ohne Zahlen erforderlich. Verwenden Sie also AttrA, AttrB und AttrC anstelle von Attr1, Attr2 und Attr3.
quelle
Nachdem Sie Ihre Frage sorgfältig gelesen haben,
Ich habe diese Lösung gefunden, die keine temporären Zellen verwendet.
Formel
Bildschirmfoto
Erklärt
Der
REGEXEXTRACT
extrahiert den Wert in der Kopfzeile nach der ersten geraden Klammer undVALUE
wandelt ihn in eine Zahl um. DasIFERROR
setzt den Wert auf,100
wenn nichts gefundenARRAYFORMULA
wird, und ermöglicht die Auswahl eines Bereichs anstelle einzelner Zellen.Beispiel
Ich habe eine Beispieldatei für Sie erstellt: Wie berechnet man gewichtete Durchschnittswerte in Google Spreadsheets?
quelle
Da die akzeptierte Antwort Google Apps Script verwendet, habe ich auch ein kleines Snippet erstellt.
Code
Bildschirmfoto
Hinweis
Das Skript folgt der gleichen Logik wie in diesem Beitrag. Der Hauptvorteil ist, dass die Gesamtwerte sofort berechnet werden.
Beispiel
Ich habe eine Beispieldatei für Sie erstellt: Wie berechnet man gewichtete Durchschnittswerte in Google Spreadsheets?
quelle
Für einfache gewichtete Durchschnitte können Sie den Zellenwert einfach mehrmals addieren. Wenn Sie möchten, dass A1 75% und B1 25% beträgt, können Sie eingeben
=AVERAGE (A1,A1,A1,B1)
. Also speziell für Sie wäre es=AVERAGE (B2,C2,C2,D1,D2,D2,D2,D2,D2,D2)
, das B2 als die Hälfte von C2 (50%) und D2 als 3x C2 (300%) wiegen würde.Kompliziertere Sachen liegen über meiner Gehaltsstufe. :)
quelle
Tatsächlich ergeben beide Versionen Average.weighted und sumproduct das gleiche Ergebnis:
Ich verwende also lieber die erste, da sie viel einfacher zu handhaben ist, aber ich weiß nicht, wie ich dieser Formel andere Gewichte hinzufügen kann.
Dies ist der Tooltipp, kann aber nicht nur Gewichte und keine zusätzlichen Werte hinzufügen
quelle
Es ist ganz einfach, nur gegebene Funktionen zu verwenden.
Wobei E-Gehalt die Anzahl der Punkte und G die Wichtigkeit dieser Punkte ist.
quelle