![将 Excel 范围传递给用户定义函数的最佳方法是什么?](https://linux22.com/image/1606804/%E5%B0%86%20Excel%20%E8%8C%83%E5%9B%B4%E4%BC%A0%E9%80%92%E7%BB%99%E7%94%A8%E6%88%B7%E5%AE%9A%E4%B9%89%E5%87%BD%E6%95%B0%E7%9A%84%E6%9C%80%E4%BD%B3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我将 Excel 电子表格中的一大范围传递给用 VBA 编写的用户定义函数 (UDF) 的参数 ExcelRange。
- 我可以将参数 ExcelRange 声明为 Range,然后将其转换为 Variant:
Dim VariantArray As Variant
VariantArray = ExcelRange.Value2
或者
- 我可以直接将 UDF 的参数 ExcelRange 声明为 Variant。
无论哪种情况,在循环内部,我都会将 VariantArray 或 ExcelRange 的每个元素转换为 Double 变量。
1. 还是 2. 哪一个更省时?
答案1
无论哪种情况,在循环中,我都会将 VariantArray 的每个元素转换为 Double 变量。
哪个更有效,1. 还是 2.?
无论如何,当您将范围转换为 Variant 时,我看不到性能上的很大差异。
无论您先转换然后传递还是传递然后转换,都应该花费相同的精力。
不同之处在于 UDF 的使用:
- 如果你需要对范围执行任何操作(例如获取地址),那么显然你需要采用 Range 参数
- 如果您希望用户传递数组而不是范围,那么最好将参数声明为变量(例如
=SUM({1,2,3})
Excel 中的有效公式)。