问题: 我需要调用直接和间接引用。每次程序运行时,我都会向右移动一列。该列用于收集前面列的总和。 (我知道我可以将with1中的sheet1组合在一起,但是在with和sheet select之间有一些代码片段,这个特定的问题只关注.value部分。)
代码1:
Sheets("Sheet1").Select
With Range("AL2")
.Value = "=SUM(B2:RC[-1])"
End With
B2作为字符串插入,而不是作为单元名称插入。
我也尝试过:
Sheets("Sheet1").Select
With Range("AL2")
.Value = "=SUM(range("B2") & ":RC[-1])"
End With
Sheets("Sheet1").Select
With Range("AL2")
.Value = "=SUM("& B2 & ":RC[-1])"
End With
这组特殊代码无法正常运行并返回:
语法错误
答案 0 :(得分:3)
因此,在这个特定实例中的问题是您正在混合R1C1和A1样式表示法。
无论如何,我会更改你的代码来设置.Formula属性而不是.Value属性,如果你想使用那种表示法,或者将它保留为。表示法,则将其更改为.FormulaR1C1。
无论如何,您的原始代码:
Sheets("Sheet1").Select
With Range("AL2")
.Value = "=SUM(B2:RC[-1])"
End With
这是将B2设置为字符串,因为Excel正在识别RC表示法,正确地解释“RC [-1]”是单元格引用,但后来却不理解“B2”的含义。
所以,我会用这样的东西:
With Sheets("Sheet1").Range("AL2")
.FormulaR1C1 = "=SUM(R2C2:RC[-1])"
End With
然而,这将留下$ B $ 2作为绝对单元格引用,而AK2作为相对引用,这有点粗略。根据您的需要,您可以这样做:
With Sheets("Sheet1").Range("AL2")
.FormulaR1C1 = "=SUM(R2C2:R2C37)"
End With
这将导致两者都是绝对引用。
如果你想要更动态的东西,你需要对你输入到工作表中的字符串使用字符串操作。例如,如果您将r1作为范围对象(地址为B2)并将r2作为范围对象(地址为AK2),则可以执行以下操作:
With Sheets("Sheet1").Range("AL2")
.Formula = "=SUM(" & r1.address ":" & r2.address & ")"
End With
如果您有任何疑问,请与我们联系。