我有以下样本表:
<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
答案 0 :(得分:4)
INDEX
永远不会从数组中获取其行或列参数,然后在一个单元格中包含的一个数组公式中执行多次。为此,需要OFFSET
。
无论
{=SUM(N(OFFSET($C$3,,C5:J5-1)))}
作为数组公式。
或者
=SUMPRODUCT(N(OFFSET($C$3,,C5:J5-1)))
作为隐式数组公式,无需[Ctrl] + [Shift] + [Enter]。