Array-Formeln sind eine der leistungsstärksten Funktionen von Excel. Wenn Sie mit Arrayformeln vertraut sind, werden Sie sich freuen zu wissen, dass Sie VBA-Funktionen erstellen können, die ein Array zurückgeben.
Rückgabe eines Arrays von Monatsnamen
Beginnen wir mit einem einfachen Beispiel. Die Funktion MonthNames gibt ein Array mit 12 Elementen von – Sie haben es erraten – Monatsnamen zurück.
Funktion MonthNames()
MonthNames = Array("Januar", "Februar", "März", _
„April“, „Mai“, „Juni“, „Juli“, „August“, _
"September Oktober November Dezember")
Endfunktion
Um die MonthNames-Funktion in einem Arbeitsblatt zu verwenden, müssen Sie sie als 12-Zellen-Array-Formel eingeben. Wählen Sie beispielsweise den Bereich A2:L2 aus und geben Sie =MonthNames() ein . Drücken Sie dann Strg+Umschalt+Eingabe, um die Matrixformel in alle 12 ausgewählten Zellen einzugeben. Sehen Sie sich das Ergebnis an.

Verwenden der Funktion MonthNames, um ein Array mit 12 Elementen zurückzugeben.
Wenn die Monatsnamen in einer Spalte angezeigt werden sollen, wählen Sie 12 Zellen in einer Spalte aus und verwenden Sie diese Matrixformel. (Vergessen Sie nicht, es durch Drücken von Strg+Umschalt+Eingabe einzugeben.)
=TRANSPOSE(Monatsnamen())
Sie können auch einen einzelnen Monat aus dem Array auswählen. Hier ist eine Formel (keine Array-Formel), die das vierte Element des Arrays anzeigt: April.
=INDEX(Monatsnamen(),4)
Rückgabe einer sortierten Liste
Angenommen, Sie haben eine Liste mit Namen, die Sie in sortierter Reihenfolge in einem anderen Zellbereich anzeigen möchten. Wäre es nicht schön, wenn eine Arbeitsblattfunktion das für Sie erledigt?
Diese benutzerdefinierte Funktion macht genau das: Sie nimmt einen einspaltigen Zellbereich als Argument und gibt dann ein sortiertes Array dieser Zellen zurück. Bereich A2:A13 enthält einige Namen. Der Bereich C2:C13 enthält diese Formel für ein mehrzelliges Array. (Denken Sie daran, dass Sie die Formel durch Drücken von Strg+Umschalt+Eingabe eingeben müssen.)

Verwenden einer benutzerdefinierten Funktion, um einen sortierten Bereich zurückzugeben.
=Sortiert(A2:A13)
Hier ist der Code für die Sortierfunktion:
Funktion sortiert (Rng als Bereich)
Dim SortedData() als Variante
Zelle als Bereich dimmen
Dim Temp As Variant, i As Long, j As Long
Dim NonEmpty As Long
' Daten zu SortedData übertragen
Für jede Zelle in Rng
Wenn nicht leer (Zelle) dann
Nicht leer = Nicht leer + 1
ReDim Preserve SortedData (1 bis nicht leer)
SortedData(NonEmpty) = Cell.Value
Ende Wenn
Nächste Zelle
'Array sortieren
Für i = 1 To NonEmpty
Für j = i + 1 To NonEmpty
Wenn SortedData(i) > SortedData(j) Then
Temp = SortierteDaten(j)
SortierteDaten(j) = SortierteDaten(i)
SortedData(i) = Temp
Ende Wenn
Nächstes j
Als nächstes
' Array transponieren und zurückgeben
Sortiert = Application.Transpose(SortedData)
Endfunktion
Die Sorted-Funktion beginnt mit der Erstellung eines Arrays namens SortedData. Dieses Array enthält alle nicht leeren Werte im Argumentbereich. Als Nächstes wird das SortedData-Array mithilfe eines Bubble-Sort-Algorithmus sortiert. Da das Array ein horizontales Array ist, muss es transponiert werden, bevor es von der Funktion zurückgegeben wird.
Die Sortierfunktion funktioniert mit einem Bereich beliebiger Größe, solange er sich in einer einzelnen Spalte oder Zeile befindet. Wenn sich die unsortierten Daten in einer Zeile befinden, muss Ihre Formel die TRANSPOSE-Funktion von Excel verwenden, um die sortierten Daten horizontal anzuzeigen. Zum Beispiel:
=TRANSPOSE(Sortiert(A16:L16))