Formule matrike so ena najmočnejših funkcij Excela. Če poznate formule matrik, boste z veseljem vedeli, da lahko ustvarite funkcije VBA, ki vrnejo matriko.
Vrnitev niza imen mesecev
Začnimo s preprostim primerom. Funkcija MonthNames vrne 12-elementni niz - uganili ste - imen mesecev.
Funkcija Imena mesecev()
MonthNames = Array ("januar", "februar", "marec", _
"april", "maj", "junij", "julij", "avgust", _
"september", "oktober", "november", "december")
Končna funkcija
Če želite funkcijo MonthNames uporabiti na delovnem listu, jo morate vnesti kot formulo matrike z 12 celicami. Na primer, izberite obseg A2:L2 in vnesite =Imena meseca() . Nato pritisnite Ctrl+Shift+Enter, da vnesete formulo matrike v vseh 12 izbranih celicah. Preverite rezultat.
Uporaba funkcije MonthNames za vrnitev matrike z 12 elementi.
Če želite, da se imena mesecev prikažejo v stolpcu, izberite 12 celic v stolpcu in uporabite to formulo matrike. (Ne pozabite ga vnesti s pritiskom na Ctrl+Shift+Enter.)
=TRANSPOSE(Imena mesecev())
Iz matrike lahko izberete tudi en mesec. Tukaj je formula (ne formula matrike), ki prikazuje četrti element matrike: april.
=INDEX(Imena mesecev(),4)
Vrnitev razvrščenega seznama
Recimo, da imate seznam imen, ki jih želite prikazati v razvrščenem vrstnem redu v drugem obsegu celic. Ali ne bi bilo lepo, če bi funkcija delovnega lista to naredila namesto vas?
Ta funkcija po meri naredi prav to: za svoj argument vzame obseg celic z enim stolpcem in nato vrne matriko teh razvrščenih celic. Obseg A2:A13 vsebuje nekaj imen. Obseg C2:C13 vsebuje to formulo večceličnega niza. (Ne pozabite, da morate formulo vnesti s pritiskom na Ctrl+Shift+Enter.)
Uporaba funkcije po meri za vrnitev razvrščenega obsega.
=Razvrščeno (A2:A13)
Tukaj je koda za funkcijo Sorted:
Funkcija razvrščena (Rng kot obseg)
Dim SortedData() kot različica
Dim Cell As Range
Dim Temp As Variant, i As Long, j As Long
Dim NonEmpty As Long
' Prenesite podatke v SortedData
Za vsako celico v Rng
Če ne IsEmpty (Cell) potem
Neprazno = Neprazno + 1
ReDim Preserve SortedData (1 do NonEmpty)
SortedData(NonEmpty) = Cell.Value
Konec Če
Naslednja celica
' Razvrsti matriko
Za i = 1 do nepraznega
Za j = i + 1 na neprazno
Če SortedData(i) > SortedData(j) Potem
Temp = SortedData(j)
razvrščeni podatki(j) = razvrščeni podatki(i)
SortedData(i) = Temp
Konec Če
Naslednji j
Naslednji i
' Transponirajte matriko in jo vrnite
Razvrščeno = Application.Transpose(SortedData)
Končna funkcija
Funkcija Sorted se začne z ustvarjanjem matrike z imenom SortedData. Ta matrika vsebuje vse neprazne vrednosti v območju argumentov. Nato se matrika SortedData razvrsti z uporabo algoritma razvrščanja z mehurčki. Ker je niz vodoravni niz, ga je treba transponirati, preden ga funkcija vrne.
Razvrščena funkcija deluje z obsegom katere koli velikosti, če je v enem stolpcu ali vrstici. Če so nerazvrščeni podatki v vrsti, mora vaša formula uporabiti Excelovo funkcijo TRANSPOSE za prikaz razvrščenih podatkov vodoravno. Na primer:
=PRENOS.(Razvrščeno(A16:L16))