如何使用VBA宏将dynamicular引用到Excel单元格?

时间:2015-08-10 16:18:03

标签: excel vba excel-vba

我试图通过行循环来每次读取一个单元格,然后写入另一张表格。

Sub boucle_for()
    Dim col As Integer
    Dim lig As Integer
    Dim rr As Integer
    Dim cc As Integer

    col = 4
    lig = 3
    rr = 15
    cc = 24

    For i = 0 To 33
        Range("R[" & col & "]C[" & lig & "]").Formula = "=AVG('Weekly Changes'!R[" & rr & "]C[" & cc & "]:R[" & (rr + 1) & "]C[" & (cc + 1) & "])"
        rr = rr + 14
        lig = lig + 1
    Next
End Sub

我的目标是动态引用单元格,但VBA脚本说这是一个错误。我已经习惯了Java和JavaScript数组,但我在这方面失败了。

我在哪里弄错了?

1 个答案:

答案 0 :(得分:1)

我总是喜欢使用Cells类(使用R1C1引用)方法,如下所示:

Cells(rr, col).Formula = ...

如果您需要多单元格范围,可以执行以下操作:

Range(Cells(rr, col), Cells(rx, colx)).Formula = ...

但你也可以这样做:

Range("A5").Formula = ...

有些人会将列号转换为字母。我觉得它很俗气,但看起来像这样:

Range(MyNumberToLetterFunction(col) & rr).Formula = ...

或多个细胞范围:

Range("A5:B6").Formula = ...

顺便说一句,最好使用工作表参考来限定您的范围。它似乎与循环非常有效,就像你正在做的那样:

Sheet1.Cells(rr, col).Value = ...

Sheets("My Awesome Stuff").Cells(rr, col).Value = ...