通过输入单元格编号来搜索整个列来使用VLOOKUP

时间:2014-02-04 16:53:03

标签: excel vba excel-vba vlookup

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

编写一个函数来查找任何给定工作表上的列很容易(只需要大约7行 - 如果你需要它就打开一个问题!)但我遇到的问题是我有列号和行号(这是2),我不知道如何将它放入VLOOKUP。

通常VBA上的Vlookup将使用Range引用。因此,对列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)" 但它不起作用。

我能想到的最简单的解决方案是找到表格usedrange以获取最后一行,但有更简单的方法吗?

2 个答案:

答案 0 :(得分:2)

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

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

只需添加.address并将您的:in ...“...

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

答案 1 :(得分:2)

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

更改

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

StaticSheet.Cells(2,dataColumn)