使用列标题的Vlookup的macros
我有2个工作表。 我将有一个macros来做Sheet1中的Vlookup。 Sheet2将被存储的数据。 然而,每一项的数据列不会相同,因此我将不得不检查列名。
这是表1,我将input'会员ID'然后做Vlookup到表2获得'会员名'和'备注'。
这是工作表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
我试图通过search列标题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
这里不需要VBA! 你可以用公式一直这样做。 两个选项:
1.使用INDEX / MATCH
在G2中使用以下公式: =INDEX(Sheet2!E:E,MATCH(F2,Sheet2!D:D,0)
。用下面的H:H
代替E:E
。
您现在可以将表2中列的顺序转换为您喜欢的。
2.使用VLOOKUP和MATCH
如果您事先不知道订单,您也可以先查找列号,然后构buildVLOOKUP:
- 在Sheet1中,在标题上添加一行。 在F1中放置以下公式(复制到H1):
=MATCH(F2,Sheet2!1:1,0)
。 这将返回每个标题的列号。 - 现在将下面的公式放在G3中,并将其向下复制到列H:
=VLOOKUP($F3,Sheet2!$D:$Z,G$1-F$1+1,0)
希望有所帮助!