使用 vlookup 公式时应用程序定义或对象定义错误 1004 和错误 438

Application defined or object defined error 1004 and Error 438 in using vlookup formula

我正在尝试对一系列单元格使用 vlookup 函数,该函数在其他工作表中查找值。但是我不断收到一个运行时错误,上面写着 "application defined or object defined error."

ActiveSheet.Range("$A", 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 "object doesn't support this property or method"

甚至尝试将 vlookup 编辑为此,但再次出现 1004 错误:

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

尝试添加:

On error resume next

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

如果它 return 是一个错误,您的脚本将停止。

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

您似乎在尝试将公式插入特定范围。 Application.WorksheetFunction.VLookup 不插入公式,它用于 return 您的 sub/function 的值,就像普通函数所做的那样。因此,如果目标是插入一堆公式,那么您的最佳示例是正确的方法。

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

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

注意这段代码调出sheet的名称,加上感叹号(!),然后加上选区的地址。

您可能还遇到了错误,因为您在代码中遗漏了几个与号 (&)。

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