使用 Excel(对于 Mac)执行范围内每个单元格的查找
Perform lookup of every cell in a range using Excel (for Mac)
给定 Excel 中的一行,其中用项目编号填充了可变数量的列,我想在另一个 table 中进行查找,列出填充列中每个项目的成本,并将总成本相加。我的 Google-fu 让我失望了,因为我似乎找不到任何方法来对范围内的每个单元格执行 Excel 公式(在本例中为 VLOOKUP)。基本上,如果我有以下 tables:
物品成本
Item | Cost
A | 10
B | 20
C | 40
订单
Order |
1 | A
2 | A | B
3 | B | C
给定订单号,如何计算以下 table 中的总数?
订单汇总
Order | Total
1 | 10
2 | 30
3 | 60
我已经设法编写了一些生成 Orders!$B:$C
形式的查找范围的公式。我想我可以使用该范围作为某些公式的输入,以将订单中的项目映射到它们的项目成本并将它们相加。我曾希望我可以对范围内的每个项目执行 VLOOKUP,它可以 return 来自 ItemCosts
table 的范围,然后我可以求和,但 VLOOKUP 只需要一个单元格作为查找值。我觉得我错过了一些明显的东西。我应该在 VBA 中完成吗? This answer 提到 VLOOKUP 可以接受一个数组,然后 return 一个数组,但我无法在 Excel 2016 年为 Mac 重现它。它只是 return 作为单个值的第一个匹配项。
编辑:
根据评论,未规范化的订单 table 似乎是个问题。但即使它看起来像这样,我也不清楚如何查找每件商品的成本以便计算总成本。
订单
Order | Item
1 | A
2 | A
2 | B
3 | B
3 | C
有两种方法可以使用 "standard formulas" 生成所需的输出,我将提出这两种方法。我想,可能有一个数组函数可以在没有助手的情况下解决这个问题 columns/sheets,但它们往往很复杂且难以维护。
对于标准化版本,您可以执行以下操作:
1) 为订单添加一个值列 Table:
'Column of Cost in ItemCost Table' = ColumnCost
'Column of Item in ItemCost Table' = ColumnItem
Order | Item | Value
1 | A |=index(ColumnCost, match(ItemCell, ColumnItem, 0))
2 | A |...
2 | B |...
3 | B |...
3 | C |...
2) 使用求和公式对订单 table 中的值列求和,条件是订单号。
对于非规范化版本而不是辅助列,您可以使用辅助列 sheet,其形式和维度与订单 sheet.
相同
使用与上例相同的索引公式结构,但不是按sheet顺序使用ItemCell。它将如下所示:
订单
Order |
1 | A
2 | A | B
3 | B | C
订单助手
Order |
1 | 10
2 | 10 | 20
3 | 20 | 40
对于摘要 sheet,您只需对相应的列求和。
您可以在此处找到相关示例:
https://ufile.io/rbxf1
给定 Excel 中的一行,其中用项目编号填充了可变数量的列,我想在另一个 table 中进行查找,列出填充列中每个项目的成本,并将总成本相加。我的 Google-fu 让我失望了,因为我似乎找不到任何方法来对范围内的每个单元格执行 Excel 公式(在本例中为 VLOOKUP)。基本上,如果我有以下 tables:
物品成本
Item | Cost
A | 10
B | 20
C | 40
订单
Order |
1 | A
2 | A | B
3 | B | C
给定订单号,如何计算以下 table 中的总数?
订单汇总
Order | Total
1 | 10
2 | 30
3 | 60
我已经设法编写了一些生成 Orders!$B:$C
形式的查找范围的公式。我想我可以使用该范围作为某些公式的输入,以将订单中的项目映射到它们的项目成本并将它们相加。我曾希望我可以对范围内的每个项目执行 VLOOKUP,它可以 return 来自 ItemCosts
table 的范围,然后我可以求和,但 VLOOKUP 只需要一个单元格作为查找值。我觉得我错过了一些明显的东西。我应该在 VBA 中完成吗? This answer 提到 VLOOKUP 可以接受一个数组,然后 return 一个数组,但我无法在 Excel 2016 年为 Mac 重现它。它只是 return 作为单个值的第一个匹配项。
编辑: 根据评论,未规范化的订单 table 似乎是个问题。但即使它看起来像这样,我也不清楚如何查找每件商品的成本以便计算总成本。
订单
Order | Item
1 | A
2 | A
2 | B
3 | B
3 | C
有两种方法可以使用 "standard formulas" 生成所需的输出,我将提出这两种方法。我想,可能有一个数组函数可以在没有助手的情况下解决这个问题 columns/sheets,但它们往往很复杂且难以维护。
对于标准化版本,您可以执行以下操作:
1) 为订单添加一个值列 Table:
'Column of Cost in ItemCost Table' = ColumnCost
'Column of Item in ItemCost Table' = ColumnItem
Order | Item | Value
1 | A |=index(ColumnCost, match(ItemCell, ColumnItem, 0))
2 | A |...
2 | B |...
3 | B |...
3 | C |...
2) 使用求和公式对订单 table 中的值列求和,条件是订单号。
对于非规范化版本而不是辅助列,您可以使用辅助列 sheet,其形式和维度与订单 sheet.
相同使用与上例相同的索引公式结构,但不是按sheet顺序使用ItemCell。它将如下所示:
订单
Order |
1 | A
2 | A | B
3 | B | C
订单助手
Order |
1 | 10
2 | 10 | 20
3 | 20 | 40
对于摘要 sheet,您只需对相应的列求和。
您可以在此处找到相关示例: https://ufile.io/rbxf1