【问题标题】:Formula to calculate sum of items in google spreadsheet计算谷歌电子表格中项目总和的公式
【发布时间】:2020-08-18 18:13:17
【问题描述】:

我有一行中的项目(项目 1、项目 2 等)和列中每个项目的价格,我可以编写一个 复杂的公式来计算每个项目的总价吗?人,不用手动输入所有路口?

| Name   | Total   | item 1 | item 2 | item 3 |                 |    |
|--------|---------|--------|--------|--------|-----------------|----|
| John   | 2+9+2=13| 1      | 3      | 2      | price of item 1 | $2 |
| Daniel | 0+6+1=7 | 0      | 2      | 1      | price of item 2 | $3 |
| Max    | 2+3+0=5 | 1      | 1      | 0      | price of item 3 | $1 |

Link to Google Spreadsheet with the example

不幸的是,我不能在这里使用脚本,否则,这将是一个安宁的蛋糕:(

【问题讨论】:

标签: google-sheets sum google-sheets-formula array-formulas gs-vlookup


【解决方案1】:

尝试:

=ARRAYFORMULA(IF(A2:A="",,
 MMULT(HLOOKUP(C1:E1, TRANSPOSE(G2:H), 2, 0)*C2:E, 
 ROW(INDIRECT("A1:A"&COLUMNS(C:E)))^0)))



或更短:

=INDEX(IF(A2:A="",,MMULT(1*C2:E, G2:G4)))

【讨论】:

  • 对不起,但第二个答案更短且易于理解/重用
  • @Anatoly 请注意,F 列中的第二个答案项目需要与第 1 行中的项目的顺序相同 - 否则它将不起作用
  • @Anatoly --C2:E 等价于 1*C2:EN(C2:E) - 原因是 MMULT 仅适用于数字,因此需要将空单元格转换为零
  • INDEX 是 ARRAYFORMULA 的类型 - 没有任何好处,它只是更短的类型
【解决方案2】:

对于替代解决方案,请尝试:

=ArrayFormula(if(len(A2:A), mmult(--C2:E, G2:G4),))

【讨论】:

  • 你能解释一下--C2:E这是什么意思吗@这是我在谷歌上找不到的单个部分
  • 双减,也称为双一元,是将布尔值转换为一和零的操作。简单地; TRUE 为一 (1),FALSE 为零 (0)。由于 MMULT 需要数值,因此如果任何单元格为空,它将返回错误。这里使用的双一元用零填充那些空单元格。
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-29
相关资源
最近更新 更多