【问题标题】:How to apply vlookup to whole column?如何将 vlookup 应用于整列?
【发布时间】:2018-07-06 04:31:48
【问题描述】:

我想制作一个 vlookup 宏,将 vlookup 公式应用于整个列。
我被困在Range("K3").Formula = MyStringVar1 这一行,因为这仅适用于单元格 K3。将不胜感激任何帮助:)

Sub vlookDemo()
    Dim MyStringVar1 As Variant
    Dim LastRow As Long

    LastRow = Range("C" & Rows.Count).End(xlUp).Row

    On Error Resume Next

     MyStringVar1 = Application.WorksheetFunction.VLookup(Range("D3:D" & LastRow), _
      Worksheets("ProductList").Range("A4:B294"), 2, False)

    On Error GoTo 0
    If IsEmpty(MyStringVar1) Then
        ""
    End If

    Range("K3").Formula = MyStringVar1

End Sub

【问题讨论】:

  • Vlookup 使用单个值进行查找。你有 Range("D3:D" & LastRow) ?
  • 我对 VBA 方面很陌生,所以我不确定它是否被允许。该代码是收集我所理解的结果,所以我可能在 vlookup 语句上也错了..
  • 您是否尝试将查找公式应用于 Range("K3:K" & LastRow) ?第一个公式应该是 Application.WorksheetFunction.VLookup(Range("D3"), _ Worksheets("ProductList").Range("$A$4:$B$294"), 2, False) /?
  • @Hwee7 - On Error Resume Next 并非旨在隐藏您不知道如何修复的错误,也不是一个好主意,尤其是在学习 VBA 时。我建议删除它,并在故意引发错误的情况下使用它。
  • @QHarr,查找公式到 Range("K3:K" & LastRow) >> 是 Application.WorksheetFunction.VLookup(Range("D3"), _ Worksheets("ProductList").Range( "$A$4:$B$294"), 2, 假) ? >> 这似乎更正确,因为我需要修复范围以使其不会“运行”?

标签: excel vba


【解决方案1】:

我想你想要一个公式 R1C1,如下所示:

.FormulaR1C1 = _
    "=IFERROR(VLOOKUP(RC4,ProductList!R4C1:R294C2, 2, FALSE),"""")"

应用到一个范围变成:

Option Explicit
Public Sub PopulateFormulas()
    Dim lastRow As Long
    With ActiveSheet
        lastRow = .Range("C" & Rows.Count).End(xlUp).row

        .Range("K3:K" & lastRow).FormulaR1C1 = _
                                             "=IFERROR(VLOOKUP(RC4,ProductList!R4C1:R294C2, 2, FALSE),"""")"
    End With
End Sub

这会在工作表中生成公式,例如:

第一个,在 K3 中,是:

=IFERROR(VLOOKUP($D3,ProductList!$A$4:$B$294, 2, FALSE),"")

这些将 K 列填充到最后一行(基于 C 列)。

R1C1 公式意味着使用了相对引用,因此可以将相同的公式应用于所有单元格,并将在其自己的行中选取 D 列。查找范围必须具有固定的单元格引用,因此它不会移动。整个内容都包含在 IFERROR 中,如果未找到值,则将错误文本替换为 ""。

关于 R1C1 的一些信息在这个问题中给出:What is the function of FormulaR1C1?

【讨论】:

  • 我已经在底部给了你完整的代码。
  • 哦,R1C1 是一种表示法。我今天学到了一些新东西!代码对我来说很好用。再次感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 2016-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多