插入公式以从当前和最后一个工作表求和

时间:2015-11-20 03:36:51

标签: excel excel-vba vba

我有一个工作簿,我需要创建新工作表,我需要将单元格的公式从I8更改为I39,作为上一页的H8和I8的总和。因此,在sheet3中,I8值必须为=H8+sheet2!I8

Dim aCell As String
Dim bCell As String
Dim i As Integer

For i = 8 To 39

aCell = Cells(i, 7).Address
bCell = Cells(i, 8).Address '<--need this but on the previus sheet

Cells(i, 9).Formula = "= & aCell & "+" & bCell"  '<--i need the formula to be "=i,8+i,8(previus sheet)

Next i

这是我能得到的,你可以看到我想要做的但我不知道语法。

2 个答案:

答案 0 :(得分:0)

借用Scott Craner的评论:

Dim PrevSheet As Integer

PrevSheet = Application.ActiveSheet.Index - 1
ActiveSheet.Range("I8:I39").FormulaR1C1 = "=RC-1 + " & Sheets(PrevSheet).Name & "!RC"

只要您选择了正确的工作表,并且工作表的索引是默认值,即Sheet1的索引为1,Sheet2的索引为2,则此方法有效。 如果您添加或删除工作表,情况可能并非总是如此。

答案 1 :(得分:0)

您可以依靠当前Worksheet.Index property来检索上一张表的名称。 Range.Address property可以提供其余的。

Sub newFormulas()
    Dim i As Long

    With Worksheets("Sheet3")
        For i = 8 To 39
            .Cells(i, 9).Formula = _
                Chr(61) & .Cells(i, 8).Address(0, 0) & Chr(43) & _
                Worksheets(.Index - 1).Range(.Cells(i, 9).Address).Address(0, 0, external:=True)
        Next i
    End With
End Sub

我已使用Chr function的ASCII代码,以避免处理大量引用的字符串部分。