Masīvu formulas ir viena no Excel jaudīgākajām funkcijām. Ja esat iepazinies ar masīvu formulām, jūs priecāsities uzzināt, ka varat izveidot VBA funkcijas, kas atgriež masīvu.
Atgriež mēnešu nosaukumu masīvu
Sāksim ar vienkāršu piemēru. Funkcija MonthNames atgriež 12 elementu masīvu ar mēnešu nosaukumiem — jūs to uzminējāt.
Funkcija MonthNames()
MonthNames = Array ("janvāris", "februāris", "marts", _
“Aprīlis”, “Maijs”, “Jūnijs”, “Jūlijs”, “Augusts”, _
“Septembris”, “Oktobris”, “Novembris”, “Decembris”)
Beigu funkcija
Lai darblapā izmantotu funkciju MonthNames, tā jāievada kā 12 šūnu masīva formula. Piemēram, atlasiet diapazonu A2:L2 un ievadiet =MonthNames() . Pēc tam nospiediet Ctrl+Shift+Enter, lai ievadītu masīva formulu visās 12 atlasītajās šūnās. Pārbaudiet rezultātu.
Funkcijas MonthNames izmantošana, lai atgrieztu 12 elementu masīvu.
Ja vēlaties, lai mēnešu nosaukumi tiktu parādīti kolonnā, atlasiet 12 šūnas kolonnā un izmantojiet šo masīva formulu. (Neaizmirstiet to ievadīt, nospiežot Ctrl+Shift+Enter.)
=TRANSPOSE(Mēneša nosaukumi())
Varat arī izvēlēties vienu mēnesi no masīva. Šeit ir formula (nevis masīva formula), kas parāda masīva ceturto elementu: aprīlis.
=INDEKSS(Mēneša nosaukumi(),4)
Sakārtota saraksta atgriešana
Pieņemsim, ka jums ir saraksts ar nosaukumiem, kurus vēlaties rādīt sakārtotā secībā citā šūnu diapazonā. Vai nebūtu jauki, ja darblapas funkcija to izdarītu jūsu vietā?
Šī pielāgotā funkcija dara tieši to: tā kā argumentu izmanto vienas kolonnas šūnu diapazonu un pēc tam atgriež šo sakārtoto šūnu masīvu. Diapazons A2:A13 satur dažus nosaukumus. Diapazons C2:C13 satur šo daudzšūnu masīva formulu. (Atcerieties, ka formula jāievada, nospiežot Ctrl+Shift+Enter.)
Pielāgotas funkcijas izmantošana, lai atgrieztu sakārtotu diapazonu.
=Sakārtots (A2:A13)
Šeit ir funkcijas Kārtotais kods:
Funkcija sakārtota (Rng kā diapazons)
Dim SortedData() kā variants
Dim Cell As Range
Dim Temp As Variant, i As Long, j As Long
Dim NonEmpty As Long
Pārsūtiet datus uz SortedData
Katrai Rng šūnai
Ja Not IsEmpty(Cell) Tad
NonEmpty = NonEmpty + 1
RedDim Saglabāt sakārtotos datus (no 1 uz netukšu)
Sakārtotie dati (NonEmpty) = Šūna.Vērtība
Beigas Ja
Nākamā šūna
' Kārtojiet masīvu
Ja i = 1 uz NonEmpty
Ja j = i + 1 uz NonEmpty
Ja SortedData(i) > SortedData(j) Tad
Temp = sakārtoti dati(j)
Kārtoti dati(j) = sakārtoti dati(i)
SortedData(i) = Temp
Beigas Ja
Nākamais j
Nākamais i
' Transponējiet masīvu un atgrieziet to
Sakārtots = Application.Transpose(SortedData)
Beigu funkcija
Funkcija Sorted sākas, izveidojot masīvu ar nosaukumu SortedData. Šajā masīvā ir visas argumentu diapazona vērtības, kas nav tukšas. Pēc tam tiek sakārtots SortedData masīvs, izmantojot burbuļu kārtošanas algoritmu. Tā kā masīvs ir horizontāls masīvs, tas ir jātransponē, pirms funkcija to atgriež.
Kārtotā funkcija darbojas ar jebkura lieluma diapazonu, ja vien tā atrodas vienā kolonnā vai rindā. Ja nešķirotie dati atrodas rindā, jūsu formulai ir jāizmanto Excel funkcija TRANSPOSE, lai kārtotos datus parādītu horizontāli. Piemēram:
=TRANSPOZĒT(Sakārtots(A16:L16))