使用VLOOKUPinput单元格号码来search整个列

我想通过编写一些VBA代码来使VLOOKUP函数dynamic化,以返回用户正在查找的列的列号,然后在该列上执行VLOOKUP。 这样,用户移动列的位置并不重要(只要列标题停留在第1行),因为应用程序将自动寻找列编号。

写一个函数在任何给定的表上find一列是很容易的(只需要大约7行 – 如果你想要的话打开一个问题!)但是我遇到的问题是一旦我有列号和行号(这是2 ),我不知道如何把它放入VLOOKUP。

通常在VBA上的Vlookup将使用范围引用。 所以在列M上的查找将是这样的:

Application.VLookup(Datasheet.Cells(x, y), StaticSheet.Range("A:A"), 1, False) 

但是,我怎样才能让它为细胞数量工作? 我试过了

 StaticSheet.Range(Cells(2,dataColumn):Cells(2,dataColumn)) 

代替"StaticSheet.Range(A:A)"但它不起作用。

我能想到的最简单的解决scheme是find工作表的使用usedrange来获得最后一行,但有一个更简单的方法吗?

cells()返回一个范围对象。 你在这里使用它的方式你希望它返回一个地址。

 Range(Cells(2,dataColumn):Cells(2,dataColumn)) 

只需添加.address并把你的:“”…

 Range(Cells(2,dataColumn).address & ":" & Cells(2,dataColumn).address) 

因为在同一行上调用两次的时候dataColumn总是相同的,所以你可以修改你的代码

更改

 StaticSheet.Range(Cells(2,dataColumn):Cells(2,dataColumn)) 

 StaticSheet.Cells(2,dataColumn)