Ustvari funkcijo VBA za vrnitev matrike

Kazalo:

Anonim

Kot že naslov pove, se bomo naučili ustvariti uporabniško definirano funkcijo v Excelu, ki vrne matriko. Že smo se naučili, kako ustvariti uporabniško definirano funkcijo v VBA. Torej, ne da bi zapravljali čas, začnimo z vadnico.

Kaj je funkcija matrike?

Nizne funkcije so funkcije, ki vrnejo matriko, ko jo uporabljamo. Te funkcije se uporabljajo s kombinacijo tipk CTRL+SHIFT+ENTER, zato raje kličemo funkcijo matrike ali formule kot funkcijo CSE in formule.

Funkcija matrike excel je pogosto formula večceličnih nizov. En primer je funkcija TRANSPOSE.

Ustvarjanje funkcije matrike UDF v VBA

Torej je scenarij tak, da želim samo vrniti prve 3 parne številke s funkcijo ThreeEven ().

Koda bo videti tako.

Funkcija ThreeEven () As Integer () 'opredelite matriko Dim števil (2) As Integer' Dodelite vrednosti številkam matrike (0) = 0 števil (1) = 2 številki (2) = 4 'vrnite vrednosti ThreeEven = številke End Funkcija 

Uporabimo to funkcijo na delovnem listu.

To lahko vidite, najprej izberemo tri celice (vodoravno, za navpično moramo uporabiti dvodimenzionalno matriko. Spodaj jo imamo zajeto.). Nato začnemo pisati našo formulo. Nato pritisnemo CTRL+SHIFT+ENTER. To zapolni izbrane celice z vrednostmi matrike.

Opomba:

  • V praksi ne boste vedeli, koliko celic potrebujete. V tem primeru vedno izberite več celic od pričakovane dolžine matrike. Funkcija bo celice napolnila z matriko, dodatne celice pa bodo prikazale napako #N/A.
  • Ta funkcija matrike privzeto vrača vrednosti v vodoravnem nizu. Če poskusite izbrati navpične celice, bodo vse celice prikazale samo prvo vrednost matrike.

Kako deluje?

Če želite ustvariti funkcijo matrike, morate slediti tej skladnji.

Funkcija functionName (spremenljivke) Kot returnType () zatemni resultArray (dolžina) kot dataType 'Dodelite vrednosti matriki tukaj functionName = resultArray End Funkcija 

Izjava funkcije mora biti enaka zgoraj. Ta je izjavil, da je funkcija niza.
Med uporabo na delovnem listu morate uporabiti kombinacijo tipk CTRL+SHIFT+ENTER. V nasprotnem primeru vrne samo prvo vrednost matrike.

Funkcija matrike VBA za vrnitev navpične matrike

Če želite, da vaša funkcija matrike UDF deluje navpično, vam ni treba veliko narediti. Samo razglasite matrike kot dvodimenzionalno matriko. Nato v prvo dimenzijo dodajte vrednosti, drugo dimenzijo pa pustite prazno. To naredite tako:

Funkcija ThreeEven () As Integer () 'opredelite matrične številke Dim (2,0) As Integer' Dodelite vrednosti številkam matrike (0,0) = 0 števil (1,0) = 2 številki (2,0) = 4 ' vrnjene vrednosti ThreeEven = številke Končna funkcija 

Tako ga uporabljate na delovnem listu.

Funkcija matrike UDF z argumenti v Excelu

V zgornjih primerih smo preprosto natisnili statične vrednosti vsote na list. Recimo, da želimo, da naša funkcija sprejme argument obsega, izvede nekatere operacije nad njimi in vrne nastalo matriko.

Primer Dodajte "-done" vsaki vrednosti v obsegu

Vem, da je to mogoče enostavno narediti, ampak samo zato, da vam pokažem, kako lahko uporabite uporabniško definirane funkcije matrike VBA za reševanje težav.

Torej, tukaj želim funkcijo niza, ki vzame obseg kot argument in vsaki vrednosti v obsegu doda "-done". To je mogoče enostavno narediti s funkcijo združevanja, vendar bomo tukaj uporabili funkcijo niza.

Funkcija CONCATDone (rng kot obseg) kot varianta () zatemni rezultatArr () kot varianta "Ustvari zbirko zatemni stolpec kot nova zbirka" Dodajanje vrednosti v zbirko Napaka Nadaljuj Naprej Za vsakega v V rng stolpec Dodaj V Naprej Napaka Pojdi na 0 " dokončanje operacije za vsako vrednost in njihovo dodajanje v matriko ReDim resultArr (col.Count - 1, 0) Za i = 0 Za col.Count - 1 resultArr (i, 0) = col (i + 1) & "-done" Naprej CONCATDone = Končna funkcija resultArr 

Pojasnilo:

Zgornja funkcija bo sprejela obseg kot argument in vsaki vrednosti v obsegu dodala "-done".

Vidite, da smo tukaj uporabili zbirko VBA za shranjevanje vrednosti matrike, nato pa smo opravili operacijo pri vsaki vrednosti in jih dodali nazaj v dvodimenzionalno matriko.

Torej, fantje, tako lahko ustvarite funkcijo matrike VBA po meri, ki lahko vrne matriko. Upam, da je bilo dovolj razlagalno. Če imate kakršna koli vprašanja v zvezi s tem člankom, ga vnesite v spodnji razdelek za komentarje.

Kliknite spodnjo povezavo za prenos delovne datoteke:

Ustvari funkcijo VBA za vrnitev matrike

Nizovi v Excelu Formul | Preberite, kaj so matrike v Excelu.

Kako ustvariti uporabniško določeno funkcijo prek VBA | Naučite se ustvarjati uporabniško določene funkcije v Excelu

Uporaba uporabniško določene funkcije (UDF) iz drugega delovnega zvezka z uporabo VBA v programu Microsoft Excel | Uporabite uporabniško določeno funkcijo v drugem delovnem zvezku programa Excel

Vrnite vrednosti napak iz uporabniško določenih funkcij z uporabo VBA v Microsoft Excelu | Preberite, kako lahko vrnete vrednosti napak iz uporabniško določene funkcije

Priljubljeni članki:

50 bližnjic v Excelu za večjo produktivnost

Funkcija VLOOKUP v Excelu

COUNTIF v Excelu 2016

Kako uporabljati funkcijo SUMIF v Excelu