将 Excel 范围传递给用户定义函数的最佳方法是什么?

将 Excel 范围传递给用户定义函数的最佳方法是什么?

我将 Excel 电子表格中的一大范围传递给用 VBA 编写的用户定义函数 (UDF) 的参数 ExcelRange。

  1. 我可以将参数 ExcelRange 声明为 Range,然后将其转换为 Variant:
    Dim VariantArray As Variant
    VariantArray = ExcelRange.Value2

或者

  1. 我可以直接将 UDF 的参数 ExcelRange 声明为 Variant。

无论哪种情况,在循环内部,我都会将 VariantArray 或 ExcelRange 的每个元素转换为 Double 变量。

1. 还是 2. 哪一个更省时?

答案1

无论哪种情况,在循环中,我都会将 VariantArray 的每个元素转换为 Double 变量。
哪个更有效,1. 还是 2.?

无论如何,当您将范围转换为 Variant 时,我看不到性能上的很大差异。
无论您先转换然后传递还是传递然后转换,都应该花费相同的精力。

不同之处在于 UDF 的使用:

  • 如果你需要对范围执行任何操作(例如获取地址),那么显然你需要采用 Range 参数
  • 如果您希望用户传递数组而不是范围,那么最好将参数声明为变量(例如=SUM({1,2,3})Excel 中的有效公式)。

相关内容