我使用产品代码在很多Vlookup中查找某个文件(c:/pricelist.xlsx)中的价格。我想通过创建一个新的VBA函数来简化它,但是它不起作用。
Function findprice(codes)
Dim price
Dim pricebook As Workbook
Dim pricesheet As Worksheet
Dim pricerange As Range
Dim coderange As Range
Set pricebook = Workbooks("c:\info\pricelist.xlsx")
Set pricesheet = pricebook.Sheets("Sheet2")
Set pricerange = pricesheet.Range("FF1:FF20000")
Set coderange = pricesheet.Range("H1:H20000")
findprice = Application.Index(pricerange, Application.Match(codes, coderange, 0))
End Function
答案 0 :(得分:0)
我不能肯定地说,因为您的问题未包含任何示例数据或您想做什么/为什么做的解释,但我怀疑您过于复杂化了。 >
您不需要自定义函数即可从工作表中调用工作表函数。只需使用工作表函数即可。
在这种情况下,VLookup
更容易并且节省了一个步骤(如您在标题中所建议的。)
不是指两个单元格的巨大范围,而是指整个列。
引用另一个Excel文件中的单元格就像引用其他文件的任何其他公式一样。 (更多信息,here)
您应该能够在工作表上使用类似的内容:
=VLOOKUP(A1,'c:\info\pricelist.xlsx'!$H:$FF,155,FALSE)
...其中A1
是要匹配的值(即codes
)。
如果出于某些原因需要需要此VBA,则很容易像示例函数一样进行调整。