Google Sheets:如何用单个公式计算玩家物品总价值
如何用单个公式计算每位玩家的物品总价值
我有两张表格:
一张是记录游戏玩家(P1、P2等)所持物品数量的表格:
| name | P1 | P2 | P3 | P4 |
|---|---|---|---|---|
| A | 2 | 1 | ||
| B | ||||
| C | 1 | 1 | ||
| D | 1 | 1 | ||
| E | 3 | 2 |
另一张是物品价值对应表:
| name | value |
|---|---|
| A | 10 |
| B | 5 |
| C | 4 |
| D | 1 |
| E | 5 |
我需要用单个公式计算每位玩家的物品总价值,尝试过组合VLOOKUP、SUM、FILTER但没成功。期望输出如下:
| name | total value |
|---|---|
| P1 | 39 |
| P2 | 1 |
| P3 | 20 |
| P4 | 5 |
解决方案
适用于Excel 365/2021(支持动态数组)
假设玩家物品表的区域是A1:E6(表头在第一行),物品价值表是G1:H6(表头在第一行),在空白单元格(比如J2)输入以下公式,会自动溢出所有玩家的总价值:
=LET( players, TRANSPOSE(A1:E1), qtys, TRANSPOSE(A2:E6), values, XLOOKUP(A2:A6, G2:G6, H2:H6, 0), totals, MMULT(qtys, values), HSTACK(players, totals) )
公式说明
LET:给中间变量命名,简化公式结构TRANSPOSE(A1:E1):将玩家表头行转成列,得到P1-P4的列表TRANSPOSE(A2:E6):转置物品数量区域,让每一行对应一个玩家的各物品数量XLOOKUP:匹配每个物品对应的价值,无匹配时返回0(本次场景不会出现)MMULT:通过矩阵乘法完成「数量×价值」的逐组求和,得到每个玩家的总价值HSTACK:将玩家列表和总价值列表横向合并成最终结果表格
兼容旧版Excel(无动态数组)
如果使用不支持动态数组的旧版Excel,可以针对单个玩家计算,比如计算P1的总价值:
=SUMPRODUCT((B2:B6)*(XLOOKUP(A2:A6, $G$2:$G$6, $H$2:$H$6, 0)))
将公式中的B2:B6替换为对应玩家的列区域(比如P2对应C2:C6),再下拉填充即可得到所有玩家的总价值。
内容的提问来源于stack exchange,提问作者Kyle H
相关产品推荐
相关产品推荐

