Massiivivalemid on üks Exceli võimsamaid funktsioone. Kui olete massiivivalemitega tuttav, on teil hea meel teada saada, et saate luua VBA-funktsioone, mis tagastavad massiivi.
Kuunimede massiivi tagastamine
Alustame lihtsa näitega. Funktsioon MonthNames tagastab kuunimede 12-elemendilise massiivi – arvasite ära.
Funktsioon Kuunimed()
MonthNames = Array("jaanuar", "veebruar", "märts", _
“aprill”, “mai”, “juuni”, “juuli”, “august”, _
“September”, “Oktoober”, “November”, “Detsember”)
Lõpetamisfunktsioon
Funktsiooni MonthNames kasutamiseks töölehel peate selle sisestama 12-lahtrilise massiivivalemina. Näiteks valige vahemik A2:L2 ja sisestage =MonthNames() . Seejärel vajutage klahvikombinatsiooni Ctrl+Shift+Enter, et sisestada massiivi valem kõigis 12 valitud lahtris. Kontrollige tulemust.

Funktsiooni MonthNames kasutamine 12-elemendilise massiivi tagastamiseks.
Kui soovite, et kuude nimed kuvatakse veerus, valige veerus 12 lahtrit ja kasutage seda massiivi valemit. (Ärge unustage seda sisestada, vajutades klahvikombinatsiooni Ctrl+Shift+Enter.)
=TRANSPOSE(Kuunimed())
Samuti saate massiivist välja valida ühe kuu. Siin on valem (mitte massiivivalem), mis kuvab massiivi neljanda elemendi: Aprill.
=INDEKS(Kuunimed(),4)
Sorteeritud loendi tagastamine
Oletame, et teil on nimede loend, mida soovite mõnes teises lahtrivahemikus sorteeritud järjekorras kuvada. Kas poleks tore, kui töölehe funktsioon seda teie eest teeks?
See kohandatud funktsioon teeb just seda: see võtab oma argumendiks ühe veerulise lahtrivahemiku ja tagastab seejärel sorteeritud lahtrite massiivi. Vahemik A2:A13 sisaldab mõningaid nimesid. Vahemik C2:C13 sisaldab seda mitmerakulise massiivi valemit. (Pidage meeles, et peate sisestama valemi, vajutades klahvikombinatsiooni Ctrl+Shift+Enter.)

Sorteeritud vahemiku tagastamiseks kohandatud funktsiooni kasutamine.
=Sorditud (A2:A13)
Siin on funktsiooni Sorted kood:
Funktsioon sorteeritud (Rng vahemikuna)
Dim SortedData() Variandina
Dim Cell as Range
Dim Temp as Variant, i As Long, j As Long
Dim NonEmpty As Long
Andmete ülekandmine jaotisesse SortedData
Iga Rng-i lahtri jaoks
Kui ei ole tühi (lahter), siis
NonEmpty = NonEmpty + 1
ReDim Preserve Sorted Data (1 kuni mittetühi)
SortedData(NonEmpty) = Lahtri väärtus
Lõpeta Kui
Järgmine lahter
' Sorteeri massiiv
Kui i = 1, mittetühjaks
Kui j = i + 1, mittetühjaks
Kui SortedData(i) > SortedData(j) Siis
Temp = SortedData(j)
SortedData(j) = SortedData(i)
SortedData(i) = Temp
Lõpeta Kui
Järgmine j
Järgmine i
' Transponeerige massiiv ja tagastage see
Sorteeritud = Application.Transpose (SortedData)
Lõpetamisfunktsioon
Funktsioon Sorted algab massiivi loomisega nimega SortedData. See massiiv sisaldab kõiki argumentide vahemikus olevaid mittetühje väärtusi. Järgmisena sorteeritakse SortedData massiiv, kasutades mullide sortimise algoritmi. Kuna massiiv on horisontaalne massiiv, tuleb see enne funktsiooni tagastamist transponeerida.
Sorditud funktsioon töötab mis tahes suurusega vahemikuga, kui see on ühes veerus või reas. Kui sortimata andmed on reas, peab teie valem kasutama sorteeritud andmete horisontaalseks kuvamiseks Exceli funktsiooni TRANSPOSE. Näiteks:
=TRANSPOSEERIMINE (Sorditud (A16:L16))