我在这个问题上运行了很多次,仍然没有找到解决方案,也没有找到为什么这个方法不起作用。我想使用cells方法通过一个列输入一个公式,所以我这样写:(只是一个例子)
With ws
iEndCol = .cells(4650,1).End(Xlup).Column
For i = 2 To iEndCol
.Cells(i, 2) = "=VLOOKUP([RC-1],Somesheet!someTable,10,FALSE)"
Next
End With
当这个方法不起作用(方法错误)时,我尝试这样做:
Cells(i,2).Select
Do While IsEmpty(ActiveCell.Offset(0, -1)) = False
ActiveCell.Formula = "=VLOOKUP([RC-1],Somesheet!someTable,10,FALSE))"
ActiveCell.Offset(1, 0).Select
Loop
或者,我尝试使用.FormulaR1C1、.Formulalocal等,而不是.Formula,这也不起作用。然后这就是工作原理:
Range("B2").Select
Do Until IsEmpty(ActiveCell.Offset(0, 5)) And IsEmpty(ActiveCell.Offset(0, 6))
If IsEmpty(ActiveCell) = False Then
ActiveCell.Offset(0, 1).Formula = "=VLOOKUP(B2,Somesheet!someTable,10,FALSE)"
End If
ActiveCell.Offset(1, 0).Select
Loop
在使用单元格输入公式时,我有什么不明白的地方?
发布于 2012-01-09 05:36:10
使用Excel界面(而不是您的代码)输入公式。
现在转到代码编辑器,按Ctrl+G键并键入:? activecell.FormulaR1C1
结果=VLOOKUP(RC[-1],Somesheet!sometable,10,FALSE)
会告诉你哪里做错了。您提供的RC语法不正确。
话虽如此,您应该始终确保您的公式语法与您选择用于设置该公式的属性相匹配。对.Formula
使用A1表示法,对FormulaR1C1
使用RC表示法。并且不要使用.Value
来设置公式。
发布于 2012-01-09 05:46:51
首先,以下方法适用于我:
Set oCell = ActiveCell
Do
Set oCell = oCell.Offset(0, 1)
oCell.FormulaR1C1 = "=VLOOKUP(RC[-1],SomeTable,10,FALSE)"
Set oCell = oCell.Offset(1, -1)
Loop Until IsEmpty(oCell)
请注意,在我的语法中,我假设SomeTable
是一个具有工作簿作用域的已定义名称,因此我不需要前缀。如果SomeTable
是特定工作表范围内的已定义名称,则只需在工作表名称前加上前缀(例如Somesheet!SomeTable
)。
其次,您应该使用Debug.Print oCell.Address
验证它试图将公式放入哪个单元格中。可能的情况是,它试图将公式填充在字面上的第一列中,这将导致公式中的错误。
https://stackoverflow.com/questions/8781338
复制相似问题