【问题标题】:Use VLOOKUP in a dynamic range using VBA使用 VBA 在动态范围内使用 VLOOKUP
【发布时间】:2013-08-27 18:46:27
【问题描述】:

我正在尝试设置 VB,以便可以对动态范围的值进行 VLOOKUP。它总是从同一个地方开始,但它可能会根据 H4 中的任何值进一步向下结束。

编辑:这是代码,它可以工作。

谢谢亚历克斯!

Public Sub State()

    Dim refRng As Range, ref As Range, dataRng As Range
    Dim i As Variant
    Dim count As Integer
    i = Sheet2.Range("H1").Value
    i = i + 3 'offset of when to start

    Set refRng = Sheet2.Range("D8:" & Cells(8, i).Address) '//horizontal range of look up values
    Set dataRng = Sheet13.Range("A:C") '//data block you want to look up value in

    For Each ref In refRng
    ref.Offset(1, 0) = Application.WorksheetFunction.VLookup(refRng, dataRng, 2, True)
    Next ref
End Sub

【问题讨论】:

  • WorksheetFunction.VLookup 返回什么? ref.Offset 是做什么的?我以为 ref 是我的输出会去的地方,但当我玩它时,情况似乎并非如此。
  • 请更清楚地解释您的数据是什么样的,以及您希望通过一些示例输入得到什么。
  • WorksheetFunction.VlookUp 根据从 D8 开始的行中的值返回您尝试查找的值。 Offset 只是将返回值放在D8 等下面的行中。

标签: vba excel


【解决方案1】:

这可能会有所帮助:

Sub LookUp()
    Dim refRng As Range, ref As Range, dataRng As Range

    Set refRng = Worksheets(1).Range("D8:F8") //horizontal range of look up values
    Set dataRng = Worksheets(2).Range("A1:B4") //data block you want to look up value in

    For Each ref In refRng
        ref.Offset(1, 0) = WorksheetFunction.VLookup(ref, dataRng, 2, 0)
    Next ref
End Sub

您可以在此处设置对查找值和要查询的数据的引用。然后只需遍历水平范围内的值并查找该值。

【讨论】:

  • 如果我动态计算范围怎么办?根据 H4 的计数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多