我有一个工作簿,我需要创建新工作表,我需要将单元格的公式从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
这是我能得到的,你可以看到我想要做的但我不知道语法。
答案 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代码,以避免处理大量引用的字符串部分。