在Excel 2007中使用UDF中的表

时间:2008-10-10 11:35:23

标签: excel excel-vba user-defined-functions vba

我正在为Excel 2007编写一个UDF,我希望将表传递给,然后在UDF中引用该表的部分内容。因此,例如我的名为“Stock”的表可能看起来像这样:

  

库存中的名称成本项目

     

泰迪熊£10 10

     

Lollipops 20p 1000

我有一个UDF,我想计算库存中剩余物品的总成本(实际例子要复杂得多,没有非常复杂的公式就无法真正完成)

理想情况下,UDF的语法类似于

TOTALPRICE(Stock)

从我可以解决的问题来看,UDF将具有签名

Function TOTALPRICE(table As Range) As Variant

我遇到的问题是如何引用表的列并迭代它们。理想情况下,我希望能够引用列标题(如表[Cost])。

2 个答案:

答案 0 :(得分:1)

这是非常基本的(没有双关语),但它会按照你的描述进行。对于较大的表格,它可能变得很慢,因为它会在宏功能和工作表之间来回传递,并且这种活动会增加。

它假设您有一行标题和一列名称(因此For循环变量从2开始)。

有各种各样的事情可能是必要的 - 我们可以将这些事件保存在另一个问题或另一个问题上。

请注意,该函数返回“Variant”,btw ...

Public Function TotalPrice(table As Range) As Variant

Dim row As Long, col As Long
Dim total As Double

    For row = 2 To table.Rows.Count
        For col = 2 To table.Columns.Count
            TotalPrice = TotalPrice + table.Cells(row, col) * table.Cells(row, col + 1)
        Next
    Next

End Function

答案 1 :(得分:0)

注意:我没有Excel 2007,我正在尝试使用网络上的MSDN doc来编写它 看起来该范围将具有ListColumns集合

因此,语法可以是table.ListColumns(“Cost”) 这有用吗?