У меня есть электронная таблица, созданная с использованием библиотеки EPPlus, со столбцами Unit (C
), Qty (D
), Rate (E
) и Total (F
). Формула для определения суммы для строки немного сложна, так как я пытаюсь избежать ошибок #Value
для пустых ячеек и т. Д. Следовательно, все вызовы функции ISNUMBER
в формуле.
Формула:
=SWITCH(C3; ISBLANK(D3); ""; "Percentage"; IF(ISNUMBER(D3); D3; 0) * IF(ISNUMBER(E3); E3; 0) / 100; IF(ISNUMBER(D3); D3; 0) * IF(ISNUMBER(E3); E3; 0))
Когда я вставляю это в электронную таблицу, в ячейку F3 (Total)
, и перетаскиваю ее во все остальные строки в электронной таблице, она работает нормально, давая правильноеИтоги по всем рядам. Тем не менее, когда я пытаюсь добавить формулу при создании электронной таблицы, следующим образом:
for (var r = startAt + 2; r < endAt; r++)
{
var amountFormula =
$"=SWITCH(C{r}; ISBLANK(D{r}); \"\"; \"Percentage\"; IF(ISNUMBER(D{r}), D{r}, 0) * IF(ISNUMBER(E{r}), E{r}, 0) / 100; IF(ISNUMBER(D{r}), D{r}, 0) * IF(ISNUMBER(E{r}), E{r}, 0))";
ws.Cells[$"F{r}"].Formula = amountFormula;
}
Я выполняю цикл для каждого набора строк, где используется формула, так как он не используется в каждой строке, напримерзаголовки, итоги групп и т. д.
Когда я пытаюсь открыть электронную таблицу в Excel, она говорит, что есть проблемное содержимое, которое будет удалено, и если я скажу «да», то удалит любой след формулы, и если яскажи нет, это не открывает электронную таблицу. Я чувствую, что есть какая-то проблема кодировки символов или что-то подобное, когда я пытаюсь добавить формулу через код. Как еще будет работать формула при вставке, но не при добавлении через код?