【问题标题】:Set formula to a range of cells将公式设置为一系列单元格
【发布时间】:2013-03-09 11:42:32
【问题描述】:

这是我想做的简单演示。我想为一系列单元格设置一个公式(例如 C1 到 C10)。

Range("C1").Formula = "=A1+B1"

但是如何使公式使用这样的动态单元格:

Range("C1:C10").Formula = "=Ax+Bx"

实际上是这样的,

C1 = A1 + B1
C2 = A2 + B2
C3 = A3 + B3
C4 = A4 + B4
C5 = A5 + B5
...
C10 = A10 + B10

如何更改此公式的 RHS 以使上述工作:Range("C1:C10").Formula = "=Ax+Bx"

【问题讨论】:

    标签: vba excel excel-formula


    【解决方案1】:

    我会更新 C1 中的公式。然后从C1复制公式并粘贴到C10...

    不确定是否有更优雅的解决方案

    Range("C1").Formula = "=A1+B1"
    Range("C1").Copy
    Range("C1:C10").Pastespecial(XlPasteall)
    

    【讨论】:

    • 这种方式没有任何问题,只是它比我回答中的代码慢得多。它使用复制和粘贴技术,在处理多个单元格时效率不高。
    • @mehow 同意.. 如果公式是嵌套的和复杂的,这将更容易理解和编写。
    • 更喜欢 neilxdims 更简单的解决方案
    【解决方案2】:

    使用公式R1C1:

    Cells((1,3),(10,3)).FormulaR1C1 = "=RC[-2]+RC[-1]"
    

    与公式不同,公式R1C1 具有相对引用。

    【讨论】:

    • 您的示例的语法不可接受。你的意思是Range(Cells(1,3),Cells(10,3)).FormulaR1C1 = "=RC[-2]+RC[-1]"
    【解决方案3】:

    我认为这是最简单的答案:2 行并且非常容易理解。它模拟了将单元格中写入的公式拖动到一系列单元格中的功能。

    Range("C1").Formula = "=A1+B1"
    Range("C1:C10").FillDown
    

    【讨论】:

      【解决方案4】:
      Range("C1:C10").Formula = "=A1+B1"
      

      就这么简单。

      它使用公式自动填充(FillDown)范围。

      【讨论】:

      • 这确实应该被接受为答案,因为它在一行代码中完成了 O.P. 的请求。
      • 除非为时已晚 2 年。正如我的评论一样。
      【解决方案5】:

      使用这个

                  Sub calc()
      
      
                  Range("C1:C10").FormulaR1C1 = "=(R10C1+R10C2)"
      
      
                  End Sub
      

      【讨论】:

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