使用Excel(适用于Mac)执行查找范围中的每个单元格

时间:2018-03-29 07:00:59

标签: excel excel-formula ms-office excel-2016

如果Excel中的行中填充了项目编号的可变列数,我希望在另一个表中执行查找,列出填充列中每个项目的成本,并总计总成本。我的谷歌已经失败了,因为我似乎无法在一个范围内的每个单元格上找到任何方法来执行Excel公式(在这种情况下为VLOOKUP)。基本上,如果我有以下表格:

ItemCosts Item | Cost A | 10 B | 20 C | 40

订单 Order | 1 | A 2 | A | B 3 | B | C

如果给出订单号,如何计算下表中的总数?

订单摘要 Order | Total 1 | 10 2 | 30 3 | 60

我设法编写了一些以Orders!$B$2:$C$2形式生成查找范围的公式。我以为我可以使用该范围作为某个公式的输入,将订单中的项目映射到项目成本并将它们相加。我希望我可以对范围中的每个项目执行VLOOKUP,它可以从ItemCosts表返回一个范围,然后我可以求和,但VLOOKUP只需要一个单元格作为查找值。我觉得我错过了一些明显的东西。我应该在VBA中做到吗? This answer提到VLOOKUP可以获取一个数组,然后返回一个数组,但我无法在Excel 2016 for Mac中重现它。它只是将第一个匹配作为单个值返回。

编辑: 根据评论,似乎非标准化的Orders表可能是个问题。但即使它看起来像这样,我也不清楚如何查找每个项目的成本,以便我可以计算总数。

订单 Order | Item 1 | A 2 | A 2 | B 3 | B 3 | C

1 个答案:

答案 0 :(得分:1)

有两种方法可以使用“标准公式”生成所需的输出,我将提出这些方法。我想,可能有一个数组函数可以在没有辅助列/表的情况下解决这个问题,但它们往往很复杂且难以维护。

对于标准化版本,您可以执行以下操作:

1)将值列添加到订单表:

'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)使用sumif公式对订单编号中的Value列进行求和。

对于非标准化版本而不是辅助列,您可以使用与订单相同形式和尺寸的帮助工作表。

使用与上例中相同的索引公式结构,而不是在订单表中使用ItemCell。它看起来如下:

订单

Order |
1     | A
2     | A | B
3     | B | C

Orders Helper

Order |
1     | 10
2     | 10 | 20
3     | 20 | 40

对于摘要表,您只需对相应列进行总结。

你可以在这里找到一个例子: https://ufile.io/rbxf1