將 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 參數
  • 如果您希望使用者傳遞陣列而不是 Range,那麼最好將參數宣告為 Variant(例如,=SUM({1,2,3})Excel 中的有效公式)。

相關內容