【问题标题】:Macros for Vlookup using Column Header使用列标题的 Vlookup 宏
【发布时间】:2013-12-31 23:13:33
【问题描述】:

我有 2 个工作表。我将有一个宏来在 Sheet1 中进行 Vlookup。 Sheet2 将是存储的数据。但是,每个术语的数据列不会相同,因此我必须检查列名。

这是表格 1。我将输入“会员 ID”然后对表格 2 进行 Vlookup 以获取“会员姓名”和“备注”。

这是第 2 页,所有数据都存储在这里。

这是 Vlookup 代码。

With Sheets("Sheet1")
.Range("G2:G" & .Cells(.Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP(RC[-1],Sheet2!C[-3]:C[-2],2,FALSE)"
End With
With Sheets("Sheet1")
.Range("H2:H" & .Cells(.Rows.Count, "F").End(xlUp).Row).Formula = "=VLOOKUP(RC[-2],Sheet2!C[-4]:C,5,FALSE)"
End With

我试图通过搜索列标题来进行 Vlookup。但我不知道该怎么做。

Worksheets("Sheet2").Activate
' Map Account name
Rows("1:1").Select
Set cell = Selection.Find(What:="Member ID", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)

If cell Is Nothing Then
    MsgBox "Column 'Member ID' could not be found.", vbCritical, "No such column"
    Cancel = True
Else
    'Vlookup here

【问题讨论】:

    标签: excel vlookup vba


    【解决方案1】:

    这里不需要 VBA!你可以一直用公式来做到这一点。两种选择:

    1.使用索引/匹配

    在 G2 中使用以下公式:=INDEX(Sheet2!E:E,MATCH(F2,Sheet2!D:D,0)。将下一列中的E:E替换为H:H

    您现在可以根据自己的喜好更改工作表 2 中的列顺序。

    2。使用 VLOOKUP 和 MATCH

    如果您不知道前面的顺序,您也可以先找到列号 - 然后构建 VLOOKUP:

    • 在 Sheet1 中,在标题上方添加一行。将以下公式放入 F1(并复制到 H1):=MATCH(F2,Sheet2!1:1,0)。这将返回每个标题的列号。
    • 现在将以下公式放入 G3 并将其向下和向右复制到 H 列:=VLOOKUP($F3,Sheet2!$D:$Z,G$1-F$1+1,0)

    希望有所帮助!

    【讨论】:

    • 嗨,谢谢你的帮助 :) 我尝试了第一个和第二个公式,它有效,但第三个公式 =VLOOKUP($H3,Sheet2!$H:$Z,G$1-H$1,0) 我得到了 #VALUE!。我试过=VLOOKUP($F3,Sheet2!$H:$Z,G$1-H$1,0) 并得到了#NA。对于第二部分,为什么是 Sheet2!$H:$Z?
    • 对不起,我的错-一定是=VLOOKUP($F3,Sheet2!$D:$Z,G$1-F$1,0)-我更正了答案。 $Z 以防万一您的表有很多列...
    • 因为 g1-f1 是 ID 列和您要返回的列之间的列数 - 即它是 VLOOKUP 的第三个参数的值。
    • 哦,那么=VLOOKUP(F3,Sheet2!$D:$Z,G$1-F$1,FALSE)=VLOOKUP(F3,Sheet2!$D:$Z,F1:G1,FALSE)一样吗?
    • 并非如此。它与=VLOOKUP(F3,Sheet2!$D:$Z,5-4,FALSE) 相同(现在我意识到它一定是G$1-F$1+1!!!) - 如果您按照说明中的第一个项目符号进行操作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多