【问题标题】:Using a formula with a range having a variable使用具有变量范围的公式
【发布时间】:2015-12-27 02:14:00
【问题描述】:

我有许多行的列。当条件格式在列中计算为真时,我还有一个模块可以计算某些单元格。

我可以使用诸如

之类的公式

=CountCFCells(A2:A201,README!$A$2)

我得到了正确的结果。但是,我只想检查前 X 行(不是全部 201),我需要为最后一行设置一个变量。我使用名称管理器定义了 NoR = 30 并将我的公式更改为

=CountCFCells("A2:A" & NoR,README!$A$2)

但是,这会返回错误。看起来变量被代入了公式,但范围在双引号中,如

=CountCFCells("A2:A30",README!$A$2)

我相信我的范围内的双引号会导致错误。有谁知道这个问题的解决方案?谢谢

【问题讨论】:

  • 我们可以查看更多您的代码吗?在 VBA 中,您发布的内容甚至不可能是完整的一行。我的猜测是您忘记将整个公式括在引号中并使用 range.formula 属性。
  • asongtoruin 和 Rory 的以下答案正常工作。

标签: excel excel-formula vba


【解决方案1】:

我个人尽可能避免 INDIRECT,因为它是易变的 - 我怀疑你的函数需要一些计算。我建议使用 INDEX:

=CountCFCells(A2:INDEX(A:A,NoR),README!$A$2)

这种结构仍然是半易失性的(它会在您第一次打开工作簿时重新计算),但比完全易失性要好。

【讨论】:

    【解决方案2】:

    函数CountCFCells 是否需要一个范围作为输入,而不是字符串?如果是这样,试试INDIRECT,像这样:

    =CountCFCells(INDIRECT("A2:A" & NoR),README!$A$2)
    

    【讨论】:

    • 是的,CountCFCells 期望(rng 作为范围,C 作为范围)。这行得通,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多