【问题标题】:Excel COUNTIFS formula not calculating, but works when manually triggeredExcel COUNTIFS 公式未计算,但在手动触发时有效
【发布时间】:2019-06-12 20:21:28
【问题描述】:

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

我有各种带有 COUNTIFS 公式的 Excel 单元格,当我使用 C# 生成 Excel 电子表格时,这些公式没有得到计算,但公式本身没有问题 - Excel 没有将我的字符串识别为公式。我知道这一点的原因是,如果我选择单元格并在公式字段上按 Enter,它会计算值。

我的 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, 连接(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();

没有成功。

有点难过,任何帮助将不胜感激。

【问题讨论】:

    标签: c# excel openxml-sdk


    【解决方案1】:

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

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

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

    而不是

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

    现在公式计算正确。

    【讨论】:

      猜你喜欢
      • 2019-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多