Was ist die beste Möglichkeit, einen Excel-Bereich an eine benutzerdefinierte Funktion zu übergeben?

Was ist die beste Möglichkeit, einen Excel-Bereich an eine benutzerdefinierte Funktion zu übergeben?

Ich übergebe einen großen Bereich aus einer Excel-Tabelle an den Parameter ExcelRange einer in VBA geschriebenen benutzerdefinierten Funktion (UDF).

  1. Ich kann den Parameter ExcelRange As Range deklarieren und ihn dann in Variant umwandeln:
    Dim VariantArray As Variant
    VariantArray = ExcelRange.Value2

oder

  1. Ich kann den Parameter ExcelRange der UDF direkt als Variante deklarieren.

In beiden Fällen konvertiere ich innerhalb einer Schleife jedes Element von VariantArray oder ExcelRange in eine Double-Variable.

Was ist zeitsparender, 1. oder 2.?

Antwort1

In beiden Fällen konvertiere ich innerhalb einer Schleife jedes Element von VariantArray in eine Double-Variable.
Was ist effizienter, 1. oder 2.?

Da Sie Ihren Bereich sowieso in Variant konvertieren, sehe ich keinen großen Unterschied in der Leistung.
Ob Sie konvertieren und dann weitergeben ODER weitergeben und dann konvertieren, sollte einfach den gleichen Aufwand erfordern.

Der Unterschied liegt in der Verwendung Ihrer UDF:

  • Wenn Sie etwas mit dem Bereich tun müssen (z. B. die Adresse abrufen), müssen Sie natürlich ein Range-Argument verwenden.
  • Wenn Sie beispielsweise erwarten, dass Benutzer Arrays und keinen Bereich übergeben, ist es besser, das Argument als Variante zu deklarieren (z. B. =SUM({1,2,3})ist es eine gültige Formel in Excel).

verwandte Informationen