image

zurückzugeben Wie der Titel schon sagt, lernen wir, wie Sie in Excel eine benutzerdefinierte Funktion erstellen, die ein Array zurückgibt. Wir haben bereits gelernt, wie man: / vba-benutzerdefinierte Funktionen verknüpft [eine benutzerdefinierte Funktion in VBA erstellen]. Beginnen wir also ohne Zeitverlust mit dem Tutorial.

Was ist eine Array-Funktion?

Array-Funktionen sind die Funktionen, die bei Verwendung ein Array zurückgeben. Diese Funktionen werden mit Tastenkombinationen STRG + UMSCHALT + EINGABETASTE verwendet. Aus diesem Grund bevorzugen wir den Aufruf von Array-Funktionen oder -Formeln als CSE-Funktion und -Formeln.

Die Excel-Array-Funktion besteht häufig aus mehrzelligen Array-Formeln. Ein Beispiel ist die link: / mathematische-Funktionen-Excel-Transponierungs-Funktion [TRANSPOSE-Funktion].

Erstellen einer UDF-Array-Funktion in VBA

Das Szenario ist also, dass ich nur die ersten 3 geraden Zahlen mit der Funktion ThreeEven () zurückgeben möchte.

Der Code sieht folgendermaßen aus.

Function ThreeEven() As Integer()

'define array

Dim numbers(2) As Integer

'Assign values to array

numbers(0) = 0

numbers(1) = 2

numbers(2) = 4

'return values

ThreeEven = numbers

End Function

Verwenden wir diese Funktion im Arbeitsblatt.

imageYou can see that, we first select three cells (horizontally, for vertical we have to use two-dimensional array. We have it covered below.). Then we start writing our formula. Then we hit CTRL+SHIFT+ENTER. This fills the selected cells with the array values.

Hinweis:

  • In der Praxis wissen Sie nicht, wie viele Zellen Sie benötigen. Wählen Sie in diesem Fall immer mehr Zellen als erwartet aus. Die Funktion füllt die Zellen mit einem Array und zusätzliche Zellen zeigen den Fehler # N / A.

  • Standardmäßig gibt diese Array-Funktion Werte in einem horizontalen Array zurück.

Wenn Sie versuchen, vertikale Zellen auszuwählen, wird in allen Zellen nur der erste Wert des Arrays angezeigt.

Wie funktioniert es?

Um eine Array-Funktion zu erstellen, müssen Sie dieser Syntax folgen.

Function functionName(variables) As returnType()

dim resultArray(length) as dataType

'Assign values to array here

functionName =resultArray

End Function

Die Funktionsdeklaration muss wie oben definiert sein. Dies erklärte, dass es sich um eine Array-Funktion handelt.

Während Sie es im Arbeitsblatt verwenden, müssen Sie die Tastenkombination STRG + UMSCHALT + EINGABETASTE verwenden. Andernfalls wird nur der erste Wert des Arrays zurückgegeben.

VBA-Array-Funktion zur Rückgabe des vertikalen Arrays

Damit Ihre UDF-Array-Funktion vertikal funktioniert, müssen Sie nicht viel tun. Deklarieren Sie die Arrays einfach als zweidimensionales Array. Fügen Sie dann in der ersten Dimension die Werte hinzu und lassen Sie die andere Dimension leer. So machen Sie es:

Function ThreeEven() As Integer()

'define array

Dim numbers(2,0) As Integer

'Assign values to array

numbers(0,0) = 0

numbers(1,0) = 2

numbers(2,0) = 4

'return values

ThreeEven = numbers

End Function

So verwenden Sie es im Arbeitsblatt.

===

imageUDF Array Function with Arguments in Excel* In the above examples, we simply printed sum static values on the sheet.

Angenommen, unsere Funktion soll ein Bereichsargument akzeptieren, einige Operationen an ihnen ausführen und das resultierende Array zurückgeben.

Beispiel Fügen Sie jedem Wert im Bereich

„-done“ hinzu Jetzt weiß ich, dass dies einfach möglich ist, aber nur um Ihnen zu zeigen, wie Sie benutzerdefinierte VBA-Array-Funktionen verwenden können, um Probleme zu lösen.

Hier möchte ich also eine Array-Funktion, die einen Bereich als Argument verwendet und jedem Wert im Bereich „-done“ hinzufügt. Dies kann einfach über den Verkettungsfunktion erfolgen, aber wir werden hier eine Array-Funktion verwenden.

Function CONCATDone(rng As Range) As Variant()

Dim resulArr() As Variant

'Create a collection

Dim col As New Collection

'Adding values to collection

On Error Resume Next

For Each v In rng

col.Add v

Next

On Error GoTo 0

'completing operation on each value and adding them to Array

ReDim resulArr(col.Count - 1, 0)

For i = 0 To col.Count - 1

resulArr(i, 0) = col(i + 1) & "-done"

Next

CONCATDone = resulArr

End Function

Erläuterung:

Die obige Funktion akzeptiert einen Bereich als Argument und fügt jedem Wert im Bereich „-done“ hinzu.

Sie können sehen, dass wir hier eine VBA-Auflistung verwendet haben, um die Werte des Arrays zu speichern, und dann haben wir unsere Operation für jeden Wert durchgeführt und sie wieder zu einem zweidimensionalen Array hinzugefügt.

image

Also ja Leute, so können Sie eine benutzerdefinierte VBA-Array-Funktion erstellen, die ein Array zurückgeben kann. Ich hoffe es war erklärend genug. Wenn Sie Fragen zu diesem Artikel haben, geben Sie diese in den Kommentaren unten ein.

`link: /wp-content-uploads-2019-12-Create-VBA-Function-to-Return-Array-1.xls [__ VBA-Funktion erstellen, um Array zurückzugeben]

Verwandte Artikel:

link: / vba-user-defined-function [So erstellen Sie eine benutzerdefinierte Funktion über VBA] | Erfahren Sie, wie Sie benutzerdefinierte Funktionen in Excel `link erstellen: / Benutzerdefinierte Funktionen-Benutzerdefinierte-Funktionen-aus-anderen-Arbeitsmappen-mit-vba-in-Microsoft-Excel [Verwenden einer benutzerdefinierten Funktion (UDF) aus einer anderen Arbeitsmappe mit VBA in Microsoft Excel] `| Verwenden Sie die benutzerdefinierte Funktion in einer anderen Arbeitsmappe von Excel `link: / custom-functions-return-error-values-from-user-defined-functions-using-vba-in-microsoft-excel [Rückgabe von Fehlerwerten aus benutzerdefinierten Funktionen Funktionen mit VBA in Microsoft Excel] `| Erfahren Sie, wie Sie Fehlerwerte von einer benutzerdefinierten Funktion

zurückgeben können === Beliebte Artikel:

link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität]

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel]

link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016]

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel]