Erstellen Sie VBA Funktion zurückgeben Array
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.
You 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.
===
UDF 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.
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.
Klicken Sie auf den folgenden Link, um die Arbeitsdatei herunterzuladen:
`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]