【问题标题】:VBA Cross referencing in range.formularange.formula中的VBA交叉引用
【发布时间】:2017-04-03 14:36:51
【问题描述】:

有人可以帮我实现这个吗?

Range("B3").Formula = "=SUMIF(Active.Select!$A:$A,Results.select!$A3,Active.select!B:B)"

我已将 Active 和 Results 定义为 WorkSheet,我的目标是对它们进行动态引用,以便宏可以在工作簿的任何工作表上运行,而无需像 Sheet1 那样具有任何类型的静态引用!

如果我尝试运行我写的内容,他会要求我通过打开的...窗口提供活动和结果

我知道这可能是一个愚蠢的问题,但我才刚刚开始

【问题讨论】:

    标签: excel range formula cross-reference vba


    【解决方案1】:

    如果您删除工作表名称,则公式将引用它所在的工作表。

    Range("D2").Formula = "=SUMIF($A:$A,$E$1,$B:$B)"
    

    工作表有一个 Evaluate 方法,该方法将返回公式的值

    注意:我没有使用Range("B3").Formula = "=SUMIF($A:$A,$A3,B:B)",因为它是循环引用。

    【讨论】:

      【解决方案2】:

      假设ActiveResults 都是Worksheet 对象,那么如果你想创建一个公式来进入ActiveSheet 的单元格B3,试试这个:

      Range("B3").Formula =  "=SUMIF('" & Active.Name & "'!$A:$A,'" & Results.Name & "'!$A3,'" & Active.Name & "'!B:B)"
      

      如果您只想获取该值并将其用于 VBA 中的某些内容,请尝试以下操作:

      Dim sumIfResult As Double
      sumIfResult = Application.WorksheetFunction.SumIf(Active.Range("$A:$A"),Results.Range("$A3"),Active.Range("B:B"))
      

      【讨论】:

      • 非常感谢第一个正是我想要的,它就像魅力一样 :-) 第二部分对我的学习也非常有用
      猜你喜欢
      • 2018-10-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      相关资源
      最近更新 更多