Formule polja jedna su od najmoćnijih značajki Excela. Ako ste upoznati s formulama polja, bit ćete sretni kada znate da možete stvoriti VBA funkcije koje vraćaju niz.
Vraćanje niza naziva mjeseci
Počnimo s jednostavnim primjerom. Funkcija MonthNames vraća niz od 12 elemenata — pogađate — imena mjeseci.
Funkcija Imena mjeseca()
MonthNames = Niz(“siječanj”, “veljača”, “ožujak”, _
"Travanj", "Svibanj", "Lipanj", "Srpanj", "Kolovoz", _
"rujan", "listopad", "studeni", "prosinac")
Završna funkcija
Da biste koristili funkciju MonthNames u radnom listu, morate je unijeti kao formulu polja s 12 ćelija. Na primjer, odaberite raspon A2:L2 i unesite =Imena mjeseca() . Zatim pritisnite Ctrl+Shift+Enter da biste unijeli formulu polja u svih 12 odabranih ćelija. Provjerite rezultat.
Korištenje funkcije MonthNames za vraćanje niza od 12 elemenata.
Ako želite da se nazivi mjeseci prikazuju u stupcu, odaberite 12 ćelija u stupcu i upotrijebite ovu formulu polja. (Ne zaboravite ga unijeti pritiskom na Ctrl+Shift+Enter.)
=TRANSPOSE(Imena mjeseca())
Također možete odabrati jedan mjesec iz niza. Evo formule (ne formule polja) koja prikazuje četvrti element niza: travanj.
=INDEX(Imena mjeseca(),4)
Vraćanje sortiranog popisa
Pretpostavimo da imate popis imena koje želite prikazati sortiranim redoslijedom u drugom rasponu ćelija. Ne bi li bilo lijepo imati funkciju radnog lista koja to radi umjesto vas?
Ova prilagođena funkcija čini upravo to: uzima raspon ćelija u jednom stupcu kao svoj argument, a zatim vraća niz sortiranih ćelija. Raspon A2:A13 sadrži neka imena. Raspon C2:C13 sadrži ovu formulu višećelijskog niza. (Ne zaboravite da formulu morate unijeti pritiskom na Ctrl+Shift+Enter.)
Korištenje prilagođene funkcije za vraćanje sortiranog raspona.
=Sređeno (A2:A13)
Evo koda za sortiranu funkciju:
Funkcija sortirana (Rng kao raspon)
Dim SortedData() kao varijanta
Zatamnjena ćelija kao raspon
Dim Temp kao varijanta, i As Long, j As Long
Dim NonEmpty As Long
' Prenesite podatke u SortedData
Za svaku ćeliju u Rng
Ako nije IsEmpty (ćelija) onda
Neprazno = Neprazno + 1
ReDim Očuvaj sortirane podatke (1 u neprazno)
SortedData(NonEmpty) = Cell.Value
Završi ako
Sljedeća ćelija
' Sortiraj niz
Za i = 1 na neprazno
Za j = i + 1 do nepraznog
Ako SortedData(i) > SortedData(j) Onda
Temp = SortedData(j)
Sortirani podaci(j) = Sortirani podaci(i)
Sortirani podaci(i) = Temp
Završi ako
Sljedeći j
Sljedeći i
' Transponirajte niz i vratite ga
Sortirano = Application.Transpose(SortedData)
Završna funkcija
Funkcija Sorted počinje stvaranjem niza pod nazivom SortedData. Ovaj niz sadrži sve neprazne vrijednosti u rasponu argumenata. Zatim se sortira niz SortedData, koristeći algoritam sortiranja mjehurića. Budući da je niz horizontalni niz, mora se transponirati prije nego što ga funkcija vrati.
Sortirana funkcija radi s rasponom bilo koje veličine, sve dok je u jednom stupcu ili retku. Ako se nerazvrstani podaci nalaze u nizu, vaša formula treba koristiti Excelovu funkciju TRANSPOSE za horizontalni prikaz sortiranih podataka. Na primjer:
=TRANSPONIRAJ(Sortirano(A16:L16))