运行时错误1004(使用循环将公式添加到单元格范围)

时间:2018-09-10 07:52:19

标签: excel vba

由于某种原因,以下代码生成了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

1 个答案:

答案 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