添加枢轴值 – 进一步的问题

我正尝试使用VBA将VLookups添加到工作表中。 我已经设法让我的代码在这个小组的帮助下工作,但是仍然存在如下所述的错误。

  • 列AA中的第一个VLOOKUP

键入的公式看起来是:= VLOOKUP(B2,'供应商审计报告'!C:AB,26,FALSE)

  • 列BB中的第二个VLOOKUP键入公式:VLOOKUP(U2,Pivot!A1:B1802,2,FALSE)其中单元格A1:B1802是一个数据透视表,定义为pvt(每次透视图的大小将不同macros运行,所以我宁愿引用定义的数据透视表,而不是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。

有没有人有任何build议如何解决代码,以使其工作。 对于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 

阅读代码时有几件事情:1)我不确定你需要写rmt =“AA2:AA”。 写rmt =“AA”可能就足够了

 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 

你为什么需要这个代码块? 看起来你正在制作一些列标签,与公式放在列中没有任何关系。

另外,在每个循环中,您需要下一个语句来结束循环。 excel知道何时迭代单元格; 从一个单元走到下一个单元。 每个单元格的工作是在循环内完成的,但循环需要一个开放(对于每个单元格在范围内)和一个closures(下一个)

你在寻找关于这些方法如何工作的解释吗? (IE如何循环工作或范围方法如何工作?)