【问题标题】:Run VLookup function housed within a VBA Macro Button运行 VBA 宏按钮内的 VLookup 函数
【发布时间】:2022-01-14 21:00:58
【问题描述】:

我一直在研究 Vlookup 函数(在单元格内工作),如下所示:

=IFERROR(VLOOKUP(B2&"*", 'Sheet2'!$AC:$AC, 1, FALSE), "N/A")

这就是使用这个公式背后的全部想法:

  • 在 Sheet1 col.B 中查找文本字符串值(例如:BajaTurkeyAvocado_6S_HeroRegular_Mobile)

  • 查看 Sheet2 col 中是否存在类似的值。 AC(例如:BajaTurkeyAvocado_6S_HeroRegular_Mobile.png 是匹配的,因为它是一个相似的值)

  • 如果匹配,则放置 Sheet2 col。将 AC 值输入 Sheet1 col。 E(此列包含我的 VLookup 函数,如上所示):

我很难在我的 VBA 宏按钮中实现此 VLookup 功能。我不想把它写在 E 列的单元格中。

这就是我的目标:

  1. 点击 VBA 按钮
  2. 根据 B 列中要查找的项目数,对 E Sheet1 中的所有值运行 vlookup,如上所示
  3. 将查找值转换为 E 列中的字符串(而不是公式)

简而言之,只要知道如何将单元格中编写的 vlookup 函数转换为 VBA 宏按钮中编写的函数就会非常有帮助。

谢谢!

【问题讨论】:

    标签: excel vba vlookup


    【解决方案1】:

    幸运的是,当您将公式应用于多单元格区域时,VBA 会自动调整它们。因此,您可以直接将您创建的公式一次应用于整个列,而不必循环。

    然后你就可以通过.Value = .Value 将公式转换为字符串。

    Sub Example()
        Dim lastrow As Long
        lastrow = Sheet1.Cells(Sheet1.Rows.Count, 2).End(xlUp).Row
        
        Dim TargetRange As Range
        Set TargetRange = Sheet1.Range("E2:E" & lastrow)
        With TargetRange
            .Formula = "=IFERROR(VLOOKUP(B2&""*"", 'Sheet2'!$AC:$AC, 1, FALSE), ""N/A"")"
            .Value = .Value
        End With
    End Sub
    

    LastRow 用于将范围修剪到已使用区域,因为 VLookUp 很昂贵,并且在整个列(甚至是空白部分)上运行它会浪费大量时间。

    【讨论】:

    • 您是否看到 OP 要求 我不想将其写在 E 列的单元格中。
    • 谢谢你们,我最终稍微修改了 Toddleson 的代码,它工作得很好!再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2012-09-04
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多