1

我在 Excel 中创建了一个表格,例如:

    
           AB
    1 个水果价格 ($)
    2 苹果 5
    3 香蕉 3
    4 橙色 4
    5 柠檬 2
    6 菠萝 4
    

这张桌子的名字是水果。如何像 VBA 代码中的对象一样使用此表?

例如在 Match 函数中使用:

result = WorksheetFunction.Match("Banana", Table("Fruits").Column("Fruit"), 0)

结果是2。


问题已解决 - 一项观察,最好使用Application.Match而不是WorksheetFunction.Match. WorksheetFunction.Match返回#Value!,当找不到该值时。与Application.Match返回不同#N/A

4

2 回答 2

1

您需要对表中适当列的范围引用进行特殊构造。如果我提出它只是改进您的代码,那将是最好的:

result = WorksheetFunction.Match("Banana", Range("Fruits[Fruit]"), 0)

假设这Fruits是表的范围名称。因此result = 2

于 2013-08-16T14:00:06.600 回答
1

在 VBA 中,表称为 ListObjects。ListObjects 有 ListRows 和 ListColumns。所有这些(加上标题、总计等)都有一个返回 Range 对象的 DataBodyRange 属性。

Application.WorksheetFunction.Match("Banana",Sheet1.ListObjects("Fruits").ListColumns("Fruit").DataBodyRange,False)
于 2013-08-16T15:02:22.617 回答