Добавление формулы Sumif к ошибке ячейки с помощью c #

Я пытаюсь добавить формулу в ячейку в несколько строк в Excel через C #. То, что я пытаюсь достичь с помощью формулы, - это 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: не удалось проанализировать: = СУММЕСЛИ (D2: S2, «‹> Н / Д »). Ошибка: Неподдерживаемая функция: СУММЕСЛИ. Список поддерживаемых функций см. В документации GemBox.Spreadsheet.

Я также попытался добавить шведскую версию формулы:

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

(В приведенном выше примере я изменил фактический номер строки на X)

и тут я получаю исключение:

System.ArgumentException: не удалось проанализировать: = SUMMA.OM (D2: S2; "‹> N / A "). Ошибка: Не ожидалось: SUMMA

Самая странная часть этого заключается в том, что если я вручную введу шведскую формулу в ячейку в Excel, она сработает.

Цените любую помощь, которую я могу получить, большое вам спасибо.


person Brewsli    schedule 20.07.2018    source источник


Ответы (1)


На самом деле я не вижу причин, по которым это может вызвать эту ошибку - то, что вы сделали, похоже, должно сработать. В духе предложения еще одной возможности для тестирования вы также можете попробовать версию формулы R1C1 и посмотреть, работает ли она:

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

Если ваша переменная rows не содержит недопустимое число, я не уверен, почему она вызывает это исключение. В приведенном вами примере ошибки все должно быть в порядке.

person Hambone    schedule 20.07.2018
comment
Эй, я полностью согласен. Мне кажется очень странным, что это не работает. Что же такое FormulaR1C1? Когда я пишу формулу, она не всплывает, нужно ли мне добавлять какие-либо ссылки? - person Brewsli; 27.07.2018
comment
Нет, это должно быть стандартно. Я предполагаю, что из-за взаимодействия intellisense не сильно вам поможет. Попробуйте определить общий диапазон (например, Range r;), а затем выполните r., и я считаю, что вы увидите, как Formula и FormulaR1C1 всплывают в качестве параметров. R1C1 - это относительная строка и столбец (строка X, столбец X), что означает, что версия формулы R1C1 остается такой же, когда вы ее копируете и вставляете. Я все еще не вижу ничего плохого в вашем коде, что заставляет меня думать, что он в какой-то момент попадает в недопустимый диапазон, например, ввод формулы = A-1 - person Hambone; 27.07.2018