0

我正在尝试在一系列单元格上使用 vlookup 函数,该函数在其他工作表中查找值。但是,我不断收到一个运行时错误,上面写着“应用程序定义或对象定义错误”。

ActiveSheet.Range("$A$1", Selection.End(xlDown)).RemoveDuplicates Columns:=1, _
    Header:=xlYes
'In Summary Tab
Range("A1").CurrentRegion.Select
nRows = Selection.Rows.Count

' Places column headers in "Summary" tab
For iCounter = 2 To Sheets.Count
    Sheets(iCounter).Select
    Range("A1").CurrentRegion.Select
    nCols = Selection.Columns.Count
         For iColumn = 2 To nCols
            Sheets(iCounter).Select
                If (WorksheetFunction.IsNumber(Cells(2, iColumn)) = "TRUE") Then
                Cells(1, iColumn).Select
                Selection.Copy
                Sheets("Summary").Select
                ActiveCell.Offset(0, 1).PasteSpecial
                Application.CutCopyMode = False
                ActiveCell.Offset(1, 0).Select
                ActiveCell.Resize(nRows - 1, 1).Select
                Selection.Formula = "=vlookup(B2," & _
                    Range(sheets(icounter).selection).Address","& icolumn",false)"
                End If
        Next
Next

我还尝试将 vlookup 公式编辑为此,(其他一切都相同):

                Selection = Application.WorksheetFunction.VLookup( _
                    "B2", Sheets(iCounter).CurrentRegion.Select, iColumn, False)

但这会产生错误 438“对象不支持此属性或方法”

甚至尝试将 vlookup 编辑为此但再次收到 1004 错误:

选择 = Application.WorksheetFunction.VLookup("B2",Sheets(iCounter).Range(Cells(1, 1), Cells(nCols, nRows)), iColumn, False)

4

2 回答 2

0

看起来好像您正试图将公式插入特定范围。Application.WorksheetFunction.VLookup不插入公式,它用于向您的子/函数返回一个值,就像普通函数一样。因此,如果目标是插入一堆公式,那么您的最佳示例是正确的方法。

您在该代码行上看到错误的原因是您实际上并未引用范围。试试这个:

Selection.Formula = "=vlookup(B2," & Sheets(icounter).Name & "!" & _
                        Selection.Address & "," & icolumn & ",false)"

请注意,此代码调用工作表的名称,添加感叹号 ( !),然后添加选择的地址。

您可能还看到了错误,因为您&的代码中缺少一些与号 ( )。

最后,请注意使用.Select,.Selection.Activate。它们在 VBA 中占有一席之地,但它们会给您带来很多麻烦。有关如何避免使用的更多信息.Select,请查看Chris Neilsen 的这个答案Siddharth Rout 的这个答案。

于 2015-12-20T20:17:47.930 回答
0

尝试添加:

On error resume next

在脚本的顶部。如果 vlookup 没有找到匹配项,它将返回错误。

如果它返回错误,您的脚本将停止。

您当前和上一个提案本质上是相同的,但语法不同 - 但我认为这不是您问题的原因。接下来尝试错误。

于 2015-12-20T19:51:05.690 回答