【问题标题】:Calculate weighted usage of an item计算项目的加权使用量
【发布时间】:2021-10-05 10:57:24
【问题描述】:

我有一个包含 2 个工作表的 Google 表格工作簿。

表 1 列出了大约 1000 个项目(组件)。该列表可能会增加。 (在上例中忽略 E 到 K 列)

表 2 列出了一些产品(目前大约 200 种,但列表可能会增加)。每个产品最多可包含 12 个组件。这些列在 C 到 N 列中(所有这些列都有数据验证,因此需要从表 1 的 1000 个组件列表中选择这些列)。 R 列包含产品的单位数。

在表 1 上,在每个组件旁边,我想计算所有产品中使用的组件的单位数。当然countif 只会计算Sheet 1!C2:N200 中特定组件的实例。同样,sumproduct 不符合要求,因为 1. C 到 N 不是数字,2. C 到 N 不是固定的。

有没有一种简单的方法来计算每个组件的单元数? (不使用 VBScript/Javascript,并且不将组件的转置列表复制粘贴到工作表 2 上)

我在想一些使用sumifsumifs 的古怪方式可能是这里的答案,但还没有弄清楚。

【问题讨论】:

  • 为什么=SUMPRODUCT(--(Sheet2!C:N=A1)) 不起作用? A1 是第一张纸上单元格的明显占位符。
  • @JvdV 不确定我是否理解公式。只是为了澄清我需要什么:我需要公式来检查组件的列 C 到 N 的所有行(在您的示例中为 A1),如果找到该行的组件,则将 R 中所述的值添加到总和中并执行此操作对于找到 A1 值的所有行。
  • 你能分享一个简化的电子表格吗?
  • 对@OC2PS,所以=SUMPRODUCT((Sheet2!C:N=A1)*Sheet2!R:R) 更好?无论如何,我看到了你的答案 =)

标签: google-sheets spreadsheet


【解决方案1】:

在 Sheet1 单元格 B2 中。把这个公式:

=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A,QUERY(SPLIT(FLATTEN(Sheet2!C2:N&"|"&Sheet2!R2:R),"|",0,0),"select Col1,SUM(Col2) group by Col1"),2,0)))

如果你想为未使用的组件返回 0 而不是空白,这个轻微的修改应该可以做到。

=ARRAYFORMULA(IF(A2:A="",,IFERROR(VLOOKUP(A2:A,QUERY(SPLIT(FLATTEN(Sheet2!C2:N&"|"&Sheet2!R2:R),"|",0,0),"select Col1,SUM(Col2) group by Col1"),2,0),0)))

Demo Sheet

【讨论】:

  • @OC2PS 根据您的声誉,如果您在使用 ; 的欧洲地区,我假设您知道如何翻译。而不是 , 用于参数分隔符...
  • 另请注意,此公式旨在作用于 Sheet1 中的整个 B 列。您需要删除单元格 B2 下方的任何其他公式,因此“妨碍”该公式的输出。
  • 成功了!你太棒了。但是,我不熟悉数组公式。对于我和其他到达此页面的人,您介意通过解释公式的组成部分以及发生了什么来扩展您的答案吗?附言我正在使用您的公式的第二个版本,并进行了一些与我的工作表相关的小调整,例如单元格地址等
  • @OC2PS 确定。这是专门针对此问题创建的示例表。我已经在名为 MK.Demo 的选项卡上列出了大部分步骤。希望有帮助! docs.google.com/spreadsheets/d/…
  • @MattKing,我很欣赏电子表格演示,而不是来自 OC2PS 的演示!
【解决方案2】:

另一种补充方式是建立数据库

=ARRAYFORMULA(SPLIT(FLATTEN(Sheet2!A2:A&"|"&Sheet2!C2:N&"|"&Sheet2!R2:R),"|",,false))

然后通过数据透视表计算,添加到 https://docs.google.com/spreadsheets/d/1Lokoms22tuqU53TlhAcdqaldQe_H7Pq8Jah2kBBYo7c/edit#gid=1233865099

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-14
    • 2021-07-29
    • 2017-06-26
    • 1970-01-01
    • 2021-12-16
    • 2021-12-27
    • 2017-12-09
    • 2011-04-01
    相关资源
    最近更新 更多