我希望通过编写一些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
以获取最后一行,但有更简单的方法吗?
答案 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)