ฉันมี Google ชีตซึ่งผลิตภัณฑ์แสดงเป็นแถวและแอตทริบิวต์เป็นคอลัมน์ แอตทริบิวต์ของผลิตภัณฑ์แต่ละรายการมีการจัดระดับในระดับ 1-10 คอลัมน์สุดท้ายของฉันคือค่าเฉลี่ยของค่าเหล่านี้ (เช่น=Average(B2:D2)
) วิธีนี้ใช้ได้ผลดีหากแต่ละแอตทริบิวต์มีน้ำหนักเท่ากัน
+--------+-------+-------+-------+---------+
| | Attr1 | Attr2 | Attr3 | Overall |
+--------+-------+-------+-------+---------+
| Prod 1 | 10 | 8 | 9 | 9 |
| Prod 2 | 2 | 10 | 7 | 6.33 |
| Prod 3 | 4 | 6 | 6 | 5.33 |
+--------+-------+-------+-------+---------+
ปัญหาคือฉันต้องการให้แต่ละแอตทริบิวต์มีน้ำหนักแตกต่างกัน ตัวอย่างเช่น Attr1 อาจไม่สำคัญและควรมีมูลค่า 50% เท่านั้นในขณะที่ Attr3 สำคัญมากและควรมีมูลค่า 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 |
+--------+-------------+-------+--------------+---------+
ค่าสำหรับแถวแรกจะเป็น:
(10*0.5 + 8*1 + 9*3) / (0.5+1+3) = 8.89
ซึ่งสามารถคำนวณได้โดยใช้:
(
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
)
ซึ่งอย่างที่คุณเห็นสามารถจัดการได้ยากมากเนื่องจากมีการเพิ่มแอตทริบิวต์เพิ่มเติม เป็นการดีที่ฉันกำลังมองหาโซลูชันที่ไม่ต้องการสร้างเซลล์ชั่วคราวเพื่อช่วยในการคำนวณ
มีฟังก์ชั่นในตัวหรืออนุสัญญาทั่วไปที่สามารถช่วยฉันคำนวณค่าเฉลี่ยถ่วงน้ำหนักเหล่านี้ได้หรือไม่?
$
สัญญาณหมายถึง?