2

我已经多次遇到这个问题,但仍然没有找到解决方案或为什么这不起作用。我想使用单元格方法通过列输入公式,所以我写了这个:(只是一个例子)

    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

或者代替 .Formula,我尝试使用 .FormulaR1C1、.Formulalocal 等,但这也不起作用。然后这是有效的:

    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

我对使用 Cells 输入公式有什么不明白的地方?

4

2 回答 2

2

使用 Excel 界面(不是您的代码)输入公式。

现在转到代码编辑器,按 Ctrl+G 并键入:? activecell.FormulaR1C1

结果 ,=VLOOKUP(RC[-1],Somesheet!sometable,10,FALSE)会告诉你你做错了什么。您没有提供正确的 RC 语法。

话虽如此,您应该始终确保您的公式语法与您选择用于设置该公式的属性相匹配。对 使用 A1 表示法,对 使用.FormulaRC 表示法FormulaR1C1。并且不要.Value用来设置公式。

于 2012-01-08T21:36:09.503 回答
1

首先,以下内容对我有用:

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是一个具有 Workbook 范围的已定义名称,因此我不需要前缀。如果SomeTable定义的名称范围是特定的工作表,那么您才需要在工作表名称前加上前缀(例如Somesheet!SomeTable)。

其次,您应该验证它试图将公式放在哪个单元格中Debug.Print oCell.Address。可能是它试图将公式填充到字面上的第一列中,这会导致公式出错。

于 2012-01-08T21:46:50.650 回答