由于某种原因,下面的代码生成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
另一种解决方案是使用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
您可以组合字符串以将它们用作公式,但您需要将它们放在引号之间
更新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