由于某种原因,以下代码生成了1004运行时错误。这是一个简单的循环,可以使用上方3行单元格中的值并在特定单元格中使用'='符号将公式添加到一系列单元格中。
上方3行的单元格包含一个公式作为文本,例如:IF(OR($A5="",W5<=0),"",RANK(W5,$W$5:$W$9248,0))
我尝试对'eq'值(即'='符号)进行硬编码,并且仍然会发生错误,但是如果您将其设置为另一个字符,它将可以正常工作。我现在没主意了。
谢谢。
Sub insertFormula()
Application.ScreenUpdating = False
'Set variables
Dim c, rng As Range
Dim eq As String
Set rng = ActiveSheet.Range("S5:W5")
eq = ActiveSheet.Range("S1").Value 'This cell holds the = sign
'Loop through range and apply formula
For Each c In rng
c.Value = eq & c.Offset(-3, 0).Value
Next c
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
另一种解决方案是使用RC表示法
Sub insertFormula()
'Set variables
Dim rng As Range
Set rng = ActiveSheet.Range("S5:W5")
rng.Formula = "=R[-3]C"
End Sub
一行
ActiveSheet.Range("S5:W5").Formula = "=R[-3]C"
更新根据OP的评论,似乎需要这样的东西
For Each c In rng
c.Formula = "=" & c.Offset(-3, 0).Value & ""
Next c
您可以编写字符串以将其用作公式,但是需要将它们放在引号之间
Upadte 2 似乎该单元格中存在一些空格,可能会导致运行时错误1004。尝试首先清除该字符串
For Each c In rng
c.Formula = "=" & WorksheetFunction.Clean(c.Offset(-3, 0).Value) & ""
'c.Formula = "=" & c.Offset(-3, 0).Value & ""
Next c
更新3 字符串中也可能包含不间断空格。您也可以删除它。
Dim s As String
For Each c In rng
s = WorksheetFunction.Clean(c.Offset(-3, 0).Value)
s = Replace(s, Chr(160), "")
c.Formula = "=" & s
'c.Formula = "=" & c.Offset(-3, 0).Value & ""
Next c