Masyvo formulės yra viena iš galingiausių „Excel“ funkcijų. Jei esate susipažinę su masyvo formulėmis, jums bus malonu žinoti, kad galite sukurti VBA funkcijas, kurios grąžina masyvą.
Grąžina mėnesių pavadinimų masyvą
Pradėkime nuo paprasto pavyzdžio. Funkcija MonthNames grąžina 12 elementų masyvą, sudarytą iš – jūs atspėjote – mėnesių pavadinimų.
Funkcijos Mėnesių pavadinimai ()
Mėnesių vardai = Array ("sausis", "vasaris", "kovas", _
„balandis“, „gegužė“, „birželis“, „liepa“, „rugpjūtis“, _
„rugsėjis“, „spalis“, „lapkritis“, „gruodis“)
Pabaigos funkcija
Norėdami naudoti funkciją MonthNames darbalapyje, turite įvesti ją kaip 12 langelių masyvo formulę. Pavyzdžiui, pasirinkite diapazoną A2:L2 ir įveskite =Mėnesio vardai() . Tada paspauskite Ctrl+Shift+Enter, kad įvestumėte masyvo formulę visose 12 pasirinktų langelių. Patikrinkite rezultatą.
Funkcijos MonthNames naudojimas norint grąžinti 12 elementų masyvą.
Jei norite, kad mėnesių pavadinimai būtų rodomi stulpelyje, pasirinkite 12 langelių stulpelyje ir naudokite šią masyvo formulę. (Nepamirškite jo įvesti paspausdami Ctrl+Shift+Enter.)
=TRANSPOSE(Mėnesio vardai())
Taip pat iš masyvo galite pasirinkti vieną mėnesį. Štai formulė (ne masyvo formulė), kuri rodo ketvirtąjį masyvo elementą: balandžio mėn.
=INDEKSAS(mėnesio vardai(),4)
Grąžina surūšiuotą sąrašą
Tarkime, kad turite pavadinimų sąrašą, kurį norite rodyti surūšiuota tvarka kitame langelių diapazone. Argi nebūtų puiku, jei darbalapio funkcija tai padarytų už jus?
Ši pasirinktinė funkcija atlieka būtent tai: kaip argumentą paima vieno stulpelio langelių diapazoną ir grąžina surūšiuotų langelių masyvą. Diapazone A2:A13 yra keletas pavadinimų. Diapazonas C2:C13 apima šią kelių langelių masyvo formulę. (Atminkite, kad formulę turite įvesti paspausdami Ctrl+Shift+Enter.)
Pasirinktinės funkcijos naudojimas surūšiuotam diapazonui grąžinti.
=Surūšiuota (A2:A13)
Štai funkcijos Rūšiuoti kodas:
Funkcija surūšiuota (Rng kaip diapazonas)
Pritemdyti Rūšiuoti duomenys () kaip variantas
Pritemdyti langelį kaip diapazoną
Dim Temp As Variant, i As Long, j As Long
Pritemdyti NonEmpty As Long
Perkelkite duomenis į „SortedData“.
Kiekvienai Rng ląstelei
Jei Ne IsEmpty (Cell) Tada
NonEmpty = NeTuščia + 1
„ReDim“ išsaugoti surūšiuotus duomenis (nuo 1 iki netuščios)
RūšiuotiDuomenys(NonTušti) = Cell.Value
Pabaiga, jei
Kitas langelis
' Rūšiuoti masyvą
Jei i = 1 Į Non Empty
Jei j = i + 1 Į Non Empty
Jei RūšiuotiDuomenys(i) > RūšiuotiDuomenys(j) Tada
Temp = Rūšiuoti duomenys (j)
Rūšiuoti duomenys (j) = Rūšiuoti duomenys (i)
Rūšiuoti duomenys(i) = Temp
Pabaiga, jei
Kitas j
Toliau i
' Perkelkite masyvą ir grąžinkite jį
Rūšiuota = Application.Transpose(SortedData)
Pabaigos funkcija
Funkcija Rūšiuoti pradedama sukuriant masyvą pavadinimu SortedData. Šiame masyve yra visos netuščios reikšmės argumentų diapazone. Tada „SortedData“ masyvas rūšiuojamas naudojant burbulų rūšiavimo algoritmą. Kadangi masyvas yra horizontalus masyvas, jis turi būti perkeltas prieš grąžinant funkcijai.
Rūšiuota funkcija veikia su bet kokio dydžio diapazonu, jei jis yra viename stulpelyje arba eilutėje. Jei nerūšiuoti duomenys yra eilutėje, jūsų formulėje turi būti naudojama „Excel“ funkcija TRANSPOSE, kad surūšiuoti duomenys būtų rodomi horizontaliai. Pavyzdžiui:
=TRANSPOZE (Surūšiuota (A16:L16))