1

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

名称 库存成本项目

泰迪熊 £10 10

棒棒糖 20p 1000

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

理想情况下,UDF 的语法看起来像

TOTALPRICE(Stock)

据我所知,这意味着 UDF 将具有签名

Function TOTALPRICE(table As Range) As Variant

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

4

2 回答 2

1

这是非常基本的(不是双关语),但它会按照您的描述进行。对于较大的表,它可能会变得很慢,因为它在宏函数和工作表之间来回移动,并且这种活动加起来。

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

有各种各样的事情可能是必要的——我们可以把它们留到另一个问题或另一个问题上。

请注意,该函数返回一个“变体”,顺便说一句......

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
于 2008-10-10T11:58:57.753 回答
0

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

因此,语法可以是 table.ListColumns("Cost")。
这行得通吗?

于 2008-10-10T17:12:53.640 回答