Excel COUNTIFS公式无法计算,但在手动触发时有效

时间:2019-06-12 20:21:28

标签: c# excel openxml-sdk

我正在使用Openxml生成电子表格。

我有多个带有COUNTIFS公式的Excel单元格,当我使用C#生成Excel电子表格时,这些单元格无法计算,但是公式本身没有错-Excel无法将我的字符串识别为公式。我知道的原因是,如果我选择单元格并在公式字段中按回车键,它将计算该值。

我的COUNTIFS所做的只是计数是否在单元格间隔上存在“复选标记”,并且它是否匹配字符串并给出百分比。公式的示例如下:

  

= COUNTIFS(C9:C10,B16,D9:D10,“✓”)/ D12

但是,我无法从代码中发送双引号,这会导致公式出错,因此我的解决方案是使用Excel的UNICHAR函数。我生成的公式是这样:

  

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

由于某种原因,即使公式没有问题,Excel也不会自动计算公式。

我有一个类似的公式可以工作-它只处理值大于零的像元。

  

= COUNTIFS(C9:C22,B35,D9:D22,CONCATENATE(CHAR(62),CHAR(48)))/ COUNTIF(D9:D22,CONCATENATE(CHAR(62),CHAR(48)))< / p>

同样,该公式遵循与我相同的问题,即无法发送双引号,但是字符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();

没有成功。

Kinda陷入困境,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以我回到这个问题并找出解决方案。

我将单元格字体更改为wingdings,现在字符252是复选标记,因此我可以使用

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

代替

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

该公式现在可以正确计算了。