【问题标题】:Cell shows #NAME? after VBA inputs formula单元格显示#NAME? VBA输入公式后
【发布时间】:2018-01-04 15:00:16
【问题描述】:
Cells(intRow, 2 + j).Formula = "=SUM(C" & intRow & ":" & colName & intRow & ")"

这是我用来将基本 SUM 功能放入某些行末尾的单元格的代码。在单元格中输入此公式后,单元格会显示“#NAME?”。如果我点击公式然后按“Enter”,公式会按预期工作(公式输入也是正确的)。

有没有办法让 VBA 自动更新这些单元格,所以公式一旦被 VBA 输入到单元格中就可以工作?

编辑:变量的示例值为:

intRow = 5
j = 7 (Column G)
colName = H (refers to j + 1)

所以单元格 K5 中的最终公式将是:

=SUM(C5:J5)

【问题讨论】:

  • "=SUM(C" & intRow & ":" & colName & intRow & ")" 的评估结果是什么?您需要发布minimal reproducible example
  • 你有自动计算吗?单元格格式最初是否正确(即常规)
  • 因此,如果不知道错误发生时变量的值,我们将无法回答这个问题。您需要显示更多代码。我们需要了解变量是如何声明的以及分配给它们的值。
  • 为了澄清:错误是在单元格中抛出的(不是在执行代码时),直到我在编辑栏内单击(显示正确的公式)并按“Enter”。之后,它按预期工作。
  • 我在 Excel 2016 64bit 中遇到过类似的情况 - 尽管设置为 volatile、自动计算、F9 和 selection.calculate,但 UDF 不会计算。我找到的唯一解决方案是搜索“=”并将其替换为“=”,这实际上使它重新计算。我怀疑 Excel 的例程中存在一个错误,用于发现需要重新计算的内容

标签: vba excel excel-formula


【解决方案1】:

已解决:使用

.FormulaR1C1

不会导致同样的错误。

Cells(intRow, 2 + j).FormulaR1C1 = "=SUM(RC[" & -(j - 1) & "]:RC[" & (-1) & "])"

【讨论】:

    【解决方案2】:

    我只是出于不同的原因遇到了同样的问题,但我认为这可能对其他人有帮助:

    这是由于本地化(语言)问题

    我是法国用户,我正在尝试以下代码:

    For Each cel In selectedRange.Cells cel.FormulaR1C1 = "=SI(R[0]C[-1]=1,1,0)" Next cel

    其中SI对应英文公式IF

    问题是FormulaR1C1 只接受英文公式:所以要修复它我不得不使用:

    For Each cel In selectedRange.Cells cel.FormulaR1C1 = "=IF(R[0]C[-1]=1,1,0)" Next cel


    否则我也可以使用我的法语公式感谢FormulaR1C1Local,例如:

    For Each cel In selectedRange.Cells cel.FormulaR1C1Local = "=SI(L(0)C(1)=1;1;0)" Next cel

    (请注意,L/C 是法语单词:Ligne/Colonne,我需要使用分隔符 ;,在 Excel 的法语世界中括号被替换为括号..)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      相关资源
      最近更新 更多