使用C#将Sumif公式添加到单元格错误

时间:2018-07-20 07:09:25

标签: c# excel sumifs

我正在尝试通过C#将公式添加到Excel中多行中的单元格中。 我想通过该公式实现的目的是在每一行SUMN/A包含所有不包含字符串column D to S的所有单元格。

这是我要添加的公式:

=SUMIF(DX:SX,"<>N/A")

(在上面的示例中,我用X更改了实际的行号)

所以我要遍历行并执行以下操作:

    foreach (var row in rows)
    {
        ws.Cells[row, 2].Formula = string.Format("=SUMIF(D{0}:S{0},\"<>N/A\")", row + 1);                          
    }

在这里我得到了例外:

  

System.ArgumentException:无法解析:= SUMIF(D2:S2,“ <> N / A”)。错误:       不支持的功能:SUMIF。有关受支持功能的列表,请咨询       GemBox.Spreadsheet文档。

我还尝试添加公式的瑞典语版本:

=SUMMA.OM(DX:SX;"<>N/A")

(在上面的示例中,我用X更改了实际的行号)

在这里,我得到了例外:

  

System.ArgumentException:无法解析:= SUMMA.OM(D2:S2;“ <> N / A”)。错误:       意外:SUMMA

最奇怪的部分是,如果我在Excel的单元格中手动输入瑞典式公式,它将起作用。

感谢我能提供的任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:0)

我实际上看不到会引发该错误的任何原因-您所做的似乎应该可行。本着提供另一种测试途径的精神,您也可以尝试该公式的R1C1版本,看看是否可行:

foreach (var row in rows)
{
    ws.Cells[row, 2].FormulaR1C1 = "=SUMIF(R[0]C[2]:R[0]C[17],\"<>N/A\")";
}

除非您的rows变量包含无效数字,否则我不确定为什么会引发该异常。在您给出的示例错误中,应该没问题。