【发布时间】:2016-08-16 10:16:25
【问题描述】:
我正在尝试使用 VBA 将 VLookups 添加到工作表中。在这个小组的帮助下,我设法让我的代码能够正常工作,但仍然存在如下所述的错误。
- AA 列中的第一个 VLOOKUP
键入的公式如下所示:=VLOOKUP(B2,'Supplier Audit Report'!C:AB,26,FALSE)
- BB 列中的第二个 VLOOKUP 键入的公式看起来像: =VLOOKUP(U2,Pivot!A1:B1802,2,FALSE) 其中单元格 A1:B1802 是定义为 pvt 的数据透视表 (每次运行宏时,数据透视表的大小都会有所不同,因此我更愿意参考定义的数据透视表而不是 A1:B1802)
我希望将公式填充到表格中数据的末尾(同样,每次都会填充到不同的单元格。
我的代码如下。我经历了各种迭代,这次迭代成功地将 VLOOKUP 公式放入 AA,但不是 AB。但是,该列的每个单元格中的公式如下(即 xcell 引用不会随着公式循环而改变,因为它是没有“”的文本,所以它不会带回一个值。)
=VLOOKUP(SEUR0310,'Supplier Audit Report'!C:AB,26,FALSE)
其中 SEUR0310 甚至不是 B2 中的值。我希望显示公式:
=VLOOKUP(B2,'Supplier Audit Report'!C:AB,26,FALSE) in cell AA2
=VLOOKUP(B3,'Supplier Audit Report'!C:AB,26,FALSE) in cell AA3 and so on
当它完成 AA 的第一个循环时,我收到 AB Vlookup 错误,如下所示:应用程序定义或对象定义错误。运行时错误 1004。
是否有人对如何修复代码以使其正常工作有任何建议。我对 VBA 仍然非常陌生,因此非常感谢您的所有帮助。
当前代码
Sub Adding_VLOOKUPS()
Dim pvt As PivotTable
Dim sAP As Worksheet
Dim sDB As Worksheet
Dim sSAR As Worksheet
Dim lastrow As Long
Dim rMT As String
Dim rPO As String
Dim xcell As Variant
Dim ycell As Variant
Set sAP = Sheets("AP Invoice Lines")
Set sDB = Sheets("DashBoard PO Report")
Set sSAR = Sheets("Supplier Audit Report")
Set pvt = Sheets("Pivot").PivotTables("PivotTable1")
lastrow = sAP.Cells(Rows.Count, "B").End(xlUp).Row
rMT = "AA2:AA" & lastrow
rPO = "AB2:AB" & lastrow
Range("AA1").Select
ActiveCell.FormulaR1C1 = "Matching Type"
Range("AB1").Select
ActiveCell.FormulaR1C1 = "PO Value"
Columns("Y:Y").Select
Selection.Copy
Columns("AA:AB").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
For Each xcell In sAP.Columns("B").Cells.SpecialCells(xlCellTypeConstants)
Range(rMT).Formula = "=VLOOKUP(" & xcell & ",'Supplier Audit Report'!C:AB,26,FALSE)"
Next xcell
For Each ycell In sAP.Columns("U").Cells.SpecialCells(xlCellTypeConstants)
Range(rPO).Formula = "=VLOOKUP(" & ycell & ",'Pivot'!A1:B1802,2,FALSE"
Next ycell
End Sub
【问题讨论】:
标签: excel vba loops formula vlookup