使用数组和INDEX求和值

时间:2016-07-13 04:04:03

标签: arrays excel

我有以下样本表:

<div class="@GetCssClass(Model.IsHighlighted(Model => Model.Property1))">@Model.Property1
<div class="@GetCssClass(Model.IsHighlighted(Model => Model.Property2))">@Model.Property2
<div class="@GetCssClass(Model.IsHighlighted(Model => Model.Property3))">@Model.Property3

我试图根据“值”中的数组索引对“点数”求和。

我的预期结果是: 30

这是我的公式:

1/A B       C   D   E   F   G   H   I   J
2                                   
3   Points  8   4   2   1               
4                                   
5   Values  1   2   3   4   4   3   1   2

出于某种原因,这只返回数组的第一个值,而不是整个总和。

为了澄清,C#版本将是这样的:

{=SUM(INDEX($C$3:$F$3,1,C5:J5))}

编辑:添加进一步的澄清示例

另一个澄清的例子:

点是数组。 'values'表示要求和的数组的索引。

以上示例与:

相同
var points = new int[] { 8, 4, 2, 1 };
var values = new int[] { 2, 4, 3, 1, 2, 4, 2 };

var result = (from v in values
              select points[v - 1]).Sum(); // -1 as '4' will crash, but in Excel '4' is fine

1 个答案:

答案 0 :(得分:4)

INDEX永远不会从数组中获取其行或列参数,然后在一个单元格中包含的一个数组公式中执行多次。为此,需要OFFSET

无论

{=SUM(N(OFFSET($C$3,,C5:J5-1)))}

作为数组公式。

或者

=SUMPRODUCT(N(OFFSET($C$3,,C5:J5-1)))

作为隐式数组公式,无需[Ctrl] + [Shift] + [Enter]。