Cuprins
Astăzi vom continua să explorăm funcțiile Excel personalizate. Deoarece știți deja cum să creați UDF-uri (și, sper, ați încercat și să le aplicați în Excel), haideți să aprofundăm puțin și să învățăm cum să folosim și să stocăm funcții definite de utilizator în Excel.
În plus, vă vom arăta cum să salvați cu ușurință funcțiile într-un fișier Excel add-in pentru a le utiliza ulterior cu câteva clicuri.
Deci, iată despre ce vom vorbi:
Diferite moduri de utilizare a UDF în Excel
Utilizarea UDF-urilor în foile de lucru
După ce ați verificat dacă UDF-urile funcționează corect, le puteți utiliza în formulele Excel sau în codul VBA.
Puteți aplica funcțiile personalizate într-un registru de lucru Excel în același mod în care utilizați funcțiile obișnuite. De exemplu, scrieți într-o celulă formula de mai jos:
= GetMaxBetween(A1:A6,10,50)
UDF poate fi utilizat în combinație cu funcțiile obișnuite. De exemplu, adăugați text la valoarea maximă calculată:
= CONCATENATE("Valoarea maximă între 10 și 50 este ", GetMaxBetween(A1: A6,10,50))
Puteți vedea rezultatul în captura de ecran de mai jos:
Puteți găsi numărul care este atât maxim cât și în intervalul 10-50.
Să verificăm o altă formulă:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Funcția personalizată GetMaxBetween verifică intervalul B2:B9 și găsește numărul maxim cuprins între 10 și 50. Apoi, folosind INDEX + MATCH, obținem numele produsului care corespunde acestei valori maxime:
După cum puteți vedea, utilizarea funcțiilor personalizate nu este prea diferită de funcțiile obișnuite din Excel.
Când faceți acest lucru, nu uitați că o funcție definită de utilizator poate doar să returneze o valoare, dar nu poate efectua alte acțiuni. Citiți mai multe despre restricțiile funcțiilor definite de utilizator.
Utilizarea UDF în procedurile și funcțiile VBA
UDF-urile pot fi, de asemenea, utilizate în macrocomenzile VBA. Mai jos puteți vedea codul macro care caută valoarea maximă din intervalul de la 10 la 50 în coloana care conține celula activă.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range(Cells(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells, 10, 50) i = Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubCodul macro conține funcția personalizată
GetMaxBetween(.Cells, 10, 50)
Aceasta găsește valoarea maximă din coloana activă. Această valoare va fi evidențiată atunci. Puteți vedea rezultatul macroului în captura de ecran de mai jos.
O funcție personalizată poate fi utilizată și în interiorul unei alte funcții personalizate. Mai devreme pe blogul nostru, am analizat problema convertirii unui număr în text folosind funcția personalizată numită Număr de vrajă .
Cu ajutorul acestuia, putem obține valoarea maximă din interval și o putem scrie imediat ca text.
Pentru a face acest lucru, vom crea o nouă funcție personalizată în care vom folosi funcțiile GetMaxBetween și Număr de vrajă care ne sunt deja cunoscute.
Function SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionDupă cum se poate observa, în GetMaxBetween este un argument pentru o altă funcție personalizată, Număr de vrajă Acesta definește valoarea maximă, așa cum am mai făcut-o de multe ori până acum. Acest număr este apoi convertit în text.
În captura de ecran de mai sus, puteți vedea cum se poate vedea modul în care SpellGetMaxBetween găsește numărul maxim între 100 și 500 și apoi îl convertește în text.
Apelarea UDF din alte registre de lucru
Dacă ați creat UDF în registrul de lucru, acest lucru nu înseamnă, din păcate, că nu vă veți confrunta cu nicio problemă.
Din experiența mea, majoritatea utilizatorilor își creează, mai devreme sau mai târziu, colecția personală de macro-uri și funcții personalizate pentru a automatiza procese și calcule individuale. Și aici apare problema - codul funcțiilor definite de utilizator în Visual Basic trebuie să fie stocat undeva pentru a putea fi utilizat ulterior în lucru.
Pentru a aplica funcția personalizată, registrul de lucru în care ați salvat-o trebuie să fie deschis în Excel. În caz contrar, veți primi eroarea #NAME! atunci când încercați să o utilizați. Această eroare indică faptul că Excel nu cunoaște numele funcției pe care doriți să o utilizați în formulă.
Să aruncăm o privire la modurile în care puteți utiliza funcțiile personalizate pe care le creați.
Metoda 1. Adăugați numele registrului de lucru la funcție
Puteți specifica numele registrului de lucru în care se află înaintea numelui funcției. De exemplu, dacă ați salvat o funcție personalizată GetMaxBetween() într-un registru de lucru numit Funcțiile mele.xlsm , atunci trebuie să introduceți următoarea formulă:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metoda 2. Stocați toate UDF-urile într-un singur fișier comun
Salvați toate funcțiile personalizate într-un registru de lucru special (de exemplu, Funcțiile mele.xlsm ) și copiați funcția dorită din acesta în registrul de lucru curent, dacă este necesar.
De fiecare dată când creați o nouă funcție personalizată, trebuie să duplicați codul acesteia în registrul de lucru în care o veți utiliza. Cu această metodă, pot apărea mai multe inconveniente:
- Dacă există o mulțime de fișiere de lucru, iar funcția este necesară peste tot, atunci codul va trebui copiat în fiecare carte.
- Nu uitați să salvați registrul de lucru într-un format compatibil cu macrocomenzile (.xlsm sau .xlsb).
- La deschiderea unui astfel de fișier, protecția împotriva macrourilor va afișa de fiecare dată un avertisment, care trebuie confirmat. Mulți utilizatori se sperie atunci când văd o avertizare cu o bară galbenă care le cere să activeze macrourile. Pentru a evita să vedeți acest mesaj, trebuie să dezactivați complet protecția Excel. Cu toate acestea, este posibil ca acest lucru să nu fie întotdeauna corect și sigur.
Cred că veți fi de acord cu mine că tot timpul deschiderea unui fișier și copierea codului funcțiilor definite de utilizator din el sau scrierea numelui acestui fișier într-o formulă nu este cea mai bună soluție. astfel, am ajuns la a treia cale.
Metoda 3. Creați un fișier Excel add-in
Cred că cea mai bună modalitate este să stocați funcțiile personalizate utilizate frecvent într-un fișier Excel add-in. Avantajele utilizării add-in-ului:
- Trebuie să conectați add-in-ul la Excel doar o singură dată. După aceea, puteți utiliza procedurile și funcțiile sale în orice fișier de pe acest computer. Nu este necesar să vă salvați registrele de lucru în formatele .xlsm și .xlsb, deoarece codul sursă nu va fi stocat în acestea, ci în fișierul add-in.
- Nu veți mai fi deranjat de protecția macro-urilor, deoarece suplimentele fac întotdeauna trimitere la surse de încredere.
- Un add-in este un fișier separat. Este ușor de transferat de la un calculator la altul, pentru a-l partaja cu colegii.
Vom vorbi mai târziu despre crearea și utilizarea unui add-in.
Utilizarea suplimentelor pentru a stoca funcții personalizate
Cum îmi creez propriul add-in? Să parcurgem acest proces pas cu pas.
Pasul 1. Creați fișierul add-in
Deschideți Microsoft Excel, creați un nou registru de lucru și salvați-l sub orice nume potrivit (de exemplu, My_Functions) în format add-in. Pentru a face acest lucru, utilizați meniul Fișier - Salvare ca sau tasta F12. Asigurați-vă că ați specificat tipul de fișier Excel Add-in :
Add-in-ul dvs. va avea extensia .xlam.
Indicație: Rețineți că, în mod implicit, Excel stochează suplimentele în folderul C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns Vă recomand să acceptați locația implicită. Dacă doriți, puteți specifica orice alt dosar. Dar atunci, la conectarea add-in-ului, va trebui să găsiți și să specificați manual noua sa locație. Dacă îl salvați în dosarul implicit, nu trebuie să căutați add-on-ul pe computer. Excel îl va lista automat.
Pasul 2. Conectați fișierul add-in
Acum, add-in-ul pe care l-am creat trebuie să fie conectat la Excel. Apoi, acesta va fi încărcat automat la pornirea programului. Pentru a face acest lucru, utilizați meniul Fișier - Opțiuni - Suplimente . Asigurați-vă că Suplimente Excel este selectat în fereastra Gestionați Faceți clic pe câmpul Du-te din partea de jos a ferestrei. În fereastra care apare, marcați add-in-ul nostru My_Functions. Dacă nu îl vedeți în listă, faceți clic pe butonul Răsfoiți și căutați locația fișierului add-in.
Dacă utilizați un add-in pentru a stoca funcții personalizate, există o regulă simplă de urmat. Dacă transferați registrul de lucru către alte persoane, asigurați-vă că transferați și o copie a add-in-ului care conține funcționalitatea dorită. Acestea ar trebui să o conecteze în același mod în care ați făcut-o acum.
Pasul 3. Adăugați funcții și macro-uri personalizate la add-in
Add-in-ul nostru este conectat la Excel, dar nu are încă nicio funcționalitate. Pentru a-i adăuga noi UDF-uri, deschideți Editorul Visual Basic apăsând Alt + F11 . Apoi puteți adăuga noi module cu cod VBA, așa cum am descris în tutorialul meu Creare UDF-uri.
Selectați fișierul add-in ( My_Finctions.xlam ) în fereastra VBAProject. Folosiți butonul Inserție - Modul pentru a adăuga un modul personalizat. Trebuie să scrieți funcții personalizate în acesta.
Puteți fie să introduceți manual codul unei funcții definite de utilizator, fie să îl copiați de undeva.
Asta e tot. Acum v-ați creat propriul add-in, l-ați adăugat la Excel și puteți utiliza UDF-ul din el. Dacă doriți să utilizați mai multe UDF-uri, scrieți codul în modulul add-in în editorul VBA și salvați-l.
Asta e tot pentru astăzi. Am învățat cum să folosim funcțiile definite de utilizator în registrul de lucru. Sperăm din tot sufletul că aceste îndrumări vă vor fi de folos. Dacă aveți întrebări, scrieți în comentariile la acest articol.