代码之家  ›  专栏  ›  技术社区  ›  ICR

在Excel 2007中使用UDF中的表

  •  1
  • ICR  · 技术社区  · 17 年前

    我正在为Excel 2007编写一个UDF,我想向其传递一个表,然后在UDF中引用该表的某些部分。例如,我的名为“Stock”的表可能看起来像这样:

    库存成本项目名称

    泰迪熊1010

    棒棒糖20p1000

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

    理想情况下,UDF的语法如下

    TOTALPRICE(Stock)
    

    根据我的计算,这意味着UDF将具有签名

    Function TOTALPRICE(table As Range) As Variant
    

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   Mike Woodhouse    17 年前

    这是非常基本的(没有双关语),但它会做你描述的事情。对于较大的表,它可能会变得很慢,因为在幕后,它会在宏函数和工作表之间来回移动,而且这种活动会加起来。

    它假设您有一行标题和一列名称(因此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
    
        2
  •  0
  •   shahkalpesh    17 年前

    注意:我没有Excel 2007,我正在尝试使用网络上的MSDN文档编写此文档。
    看起来该区域将有ListColumns集合

    所以,语法可以是table。ListColumns(“成本”)。
    这行得通吗?

    推荐文章