【问题标题】:Adding Pivot Values - further issues添加枢轴值 - 其他问题
【发布时间】: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


    【解决方案1】:

    阅读代码时的几件事: 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
    

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

    此外,在 for each 循环中,您需要一个 next 语句来结束循环。这样excel就知道什么时候迭代单元格了;从一个单元格到下一个单元格。每个单元格的工作都在循环内完成,但循环需要一个开始(对于范围内的每个单元格)和一个结束(下一个)

    【讨论】:

    • 那段代码用于标记列并且工作正常。这是插入我正在努力的 VLOOKUP 的代码。我已经为循环添加了下一位,我的问题是要进入 VLOOKUP 的文本的措辞。我现在已经成功地将第一个 VLOOKUP 放入表中,但它填充的内容不正确。我将更新上面的代码并添加更多问题。非常感谢您的帮助!
    • 答案基于:stackoverflow.com/questions/7168017/… 尝试 Range(rMT).Formula = "=VLookup(xcell, "'sSAR!C:AB", 26, False)" 带引号和等号已添加
    • 感谢您的回复,但这似乎根本不起作用。我已将上面的问题和代码修改为我现在的位置。再次感谢您的宝贵时间
    【解决方案2】:

    您是否正在寻找有关这些方法如何工作的解释? (即循环如何工作或范围方法如何工作?)

    【讨论】:

    • 感谢您的回复。我希望了解哪种方法最适合我的情况(无论是选项还是不同的方法)以及如何编写代码。
    • 好的。当你想循环对象时使用 for each 循环;例如,如果您有一组对象,例如数据透视表或文件,那么您将使用 for each 循环遍历每个对象。 range.formula 试图将特定公式硬编码到单元格中;非常适合放入,但如果您想从一个单元格增加到另一个单元格,则效果不佳。为了动态地放入值,我通常使用这样的 for 循环:
    • for i = 1 to length --- cells(i, 27) = vlookup 函数。 ----接下来我现在是下一件事;是要将公式添加到电子表格中,还是要在 Vba 中进行 vlookup 计算?
    • 谢谢 - 我想要表格中的 vookup。在 AA 列中,将 B 列中的单元格查找到定义为 sSAR 的工作表中的数据。在 AB 列中,对 U 列中的单元格的 vlookup 到定义为 sPIV 的工作表中定义为 pvt 的数据透视表中的数据。在这两种情况下,我都希望数据填充到表格的底部。这将每周运行一次,每次工作表和数据透视表中的数据大小都会不同。我已经使用类似于以下的代码设置了宏来计算数据的大小:lastrowDB = sDB.Cells(Rows.Count, "C").End(xlUp).Row
    • 还有什么不适用于其他建议的方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多