Формула COUNTIFS Excel не рассчитывается, но работает при ручном запуске - PullRequest
0 голосов
/ 12 июня 2019

Я использую Openxml для создания электронных таблиц.

У меня есть различные ячейки Excel с формулами COUNTIFS, которые не рассчитываются при создании электронной таблицы Excel с использованием C #, но в самих формулах нет ничего плохого - Excel не распознает мою строку как формулу.Причина, по которой я это знаю, заключается в том, что, если я выбрал ячейку и нажал клавишу ввода в поле формулы, он вычислил значение.

То, что делает мой COUNTIFS, считает только в том случае, если в ячейке присутствует «галочка»интервал, и если он соответствует строке и дает процент в результате.Пример формулы такой:

= COUNTIFS (C9: C10, B16, D9: D10, «✓») / D12

Однако я не смогЯ не могу отправить двойные кавычки из моего кода, это приведет к ошибке с формулой, поэтому я решил использовать функцию UNICHAR в Excel.Моя сгенерированная формула такова:

= COUNTIFS (C9: C10, B15, D9: D10, UNICHAR (10003)) / D12

По какой-то причине Excel делаетне автоматически вычислять формулу, даже если в этом нет ничего плохого.

У меня есть похожая формула, которая работает - она ​​обрабатывает только те ячейки, которые имеют значение больше нуля.

= COUNTIFS (C9: C22, B35, D9: D22, КОНКАТЕНАТ (CHAR (62), CHAR (48))) / COUNTIF (D9: D22, КОНКАТЕНАТ (CHAR (62), CHAR (48)))

Опять же, формула повторяет мою ту же проблему: я не могу отправить двойные кавычки, но символы 62 и 48 имеют> 0 соответственно.Это отлично работает.Excel вычисляет его.

Теперь, если я изменю свой ввод данных, чтобы поставить «v» вместо галочки в ячейках, и сделаю

= COUNTIFS (C9: C10,B15, D9: D10, CHAR (118)) / D12

формула работает.Это говорит о том, что проблема с UNICHAR, по какой-то причине использование этой функции заставляет Excel не автоматически вычислять ее.

Кто-нибудь испытывал что-то подобное?

С точки зрения кода, я пытался сделать

spreadSheetDocument.WorkbookPart.Workbook.CalculationProperties = new CalculationProperties()
{
    ForceFullCalculation = true,
    FullCalculationOnLoad = true
};

spreadSheetDocument.WorkbookPart.Workbook.Save();

безуспешно.

Какая глупость, любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 20 июня 2019

Итак, я вернулся к этому и нашел решение.

Я изменил шрифт ячейки на wingdings, и теперь символ 252 является галочкой, поэтому я смог использовать

=COUNTIFS(C9:C10,B15,D9:D10, CHAR(252))/D12

вместо

=COUNTIFS(C9:C10,B15,D9:D10, UNICHAR(10003))/D12

и формула теперь рассчитывается правильно.

...