在Excel中使用类似于对象的表格
我在Excel中创build了一个表格,例如:
AB 1水果价格($) 2苹果5 3香蕉3 4橙4 5柠檬2 6菠萝4
这个表的名字是Fruits。 我怎样才能在VBA代码中使用这个表像obejct?
例如在Match函数中使用:
result = WorksheetFunction.Match("Banana", Table("Fruits").Column("Fruit"), 0)
结果是2。
问题解决了 – 一个观察,最好使用Application.Match
而不是WorksheetFunction.Match
。 WorksheetFunction.Match
返回#值#Value!
,当没有find该值时。 不同于返回#N/A
Application.Match
。
您需要对表格中的相应列进行范围参考的特殊构build。 如果我只是提高你的代码,这将是最好的:
result = WorksheetFunction.Match("Banana", Range("Fruits[Fruit]"), 0)
假设Fruits
是表格的范围名称。 result = 2
在VBA中,表格被称为ListObjects。 ListObjects有ListRows和ListColumns。 所有这些(加标题,总计等)都有一个返回一个Range对象的DataBodyRange属性。
Application.WorksheetFunction.Match("Banana",Sheet1.ListObjects("Fruits").ListColumns("Fruit").DataBodyRange,False)