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

问题描述 投票:3回答:1

我正在尝试通过C#将一个公式添加到Excel中多行的单元格中。我想用公式实现的是SUM所有不包含字符串N/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中的单元格中手动输入瑞典公式,它就可以工作。

感谢我能得到的任何帮助,非常感谢你。

c# excel sumifs
1个回答
0
投票

我实际上没有看到它会抛出这个错误的任何原因 - 你做了什么似乎应该工作。本着提供另一种测试途径的精神,您还可以尝试R1C1版本的公式,看看是否有效:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.