INHOUDSOPGAWE
Vandag gaan ons voort om persoonlike Excel-funksies te verken. Soos jy reeds weet hoe om UDF's te skep (en ek hoop, jy het dit ook in jou Excel probeer toepas), kom ons delf 'n bietjie dieper en leer hoe om gebruikergedefinieerde funksies in Excel te gebruik en te stoor.
Bowendien sal ons jou wys hoe om jou funksies maklik in 'n Excel-byvoeginglêer te stoor om dit later met 'n paar klikke te gebruik.
So, hier is waaroor ons gaan praat:
Verskillende maniere om UDF in Excel te gebruik
Gebruik van UDF's in werkblaaie
Sodra jy geverifieer het dat jou UDF's reg werk, kan jy dit in Excel gebruik formules of in VBA-kode.
Jy kan pasgemaakte funksies in 'n Excel-werkboek toepas op dieselfde manier as wat jy gewone funksies gebruik. Skryf byvoorbeeld net die formule hieronder in 'n sel:
= GetMaxBetween(A1:A6,10,50)
UDF kan in kombinasie met gewone funksies gebruik word. Voeg byvoorbeeld teks by die berekende maksimum waarde:
= CONCATENATE("Maximum value between 10 and 50 is ", GetMaxBetween(A1: A6,10,50))
Jy kan die resultaat in die skermkiekie hieronder sien:
Jy kan die getal vind wat beide maksimum is en in die reeks van 10 tot 50 is.
Kom ons kyk na 'n ander formule:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), the
Die pasgemaakte funksie GetMaxBetween kontroleer die reeks B2:B9 en vind die maksimum getal tussen 10 en 50. Dan, met INDEX + MATCH, kry ons die produknaam wat by hierdie maksimum waarde pas:
Soos u kan sien, verskil die gebruik van pasgemaakte funksies nie te veel van gewone Excel niefunksies.
Wanneer jy dit doen, onthou dat 'n gebruikergedefinieerde funksie slegs 'n waarde kan teruggee, maar geen ander aksies kan uitvoer nie. Lees meer oor die beperkings van gebruikergedefinieerde funksies.
Die gebruik van UDF in VBA-prosedures en funksies
UDF's kan ook in VBA-makro's gebruik word. Hieronder kan jy die makro-kode sien wat soek vir die maksimum waarde in die reeks van 10 tot 50 in die kolom wat die aktiewe sel bevat.
Sub MacroWithUDF() Dim Rng As Range, maxcase, i As Long With ActiveSheet.Range( Selle(ActiveCell.CurrentRegion.Row, ActiveCell.Column), Cells(ActiveCell.CurrentRegion.Rows.Count _ + ActiveCell.CurrentRegion.Row - 1, ActiveCell.Column)) maxcase = GetMaxBetween(.Cells,)1 Application.Match(maxcase, .Cells, 0) .Cells(i).Interior.Color = vbRed End With End SubDie makrokode bevat die pasgemaakte funksie
GetMaxBetween(.Cells, 10, 50)
Dit vind die maksimum waarde in die aktiewe kolom. Hierdie waarde sal dan uitgelig word. Jy kan die resultaat van die makro in die skermkiekie hieronder sien.
'n Pasgemaakte funksie kan ook binne 'n ander pasgemaakte funksie gebruik word. Ons het vroeër in ons blog gekyk na die probleem om 'n nommer na teks om te skakel deur die pasgemaakte funksie genaamd SpellNumber te gebruik.
Met die hulp daarvan kan ons die maksimum waarde uit die reeks kry en onmiddellik skryf dit neer as teks.
Om dit te doen, sal ons 'n nuwe pasgemaakte funksie skep waarin ons die funksies sal gebruik GetMaxBetween en SpellNumber wat reeds aan ons bekend is.
Funksie SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(KryMaxNumCells, MaxNum) End FunksieSoos jy kan sien, is die GetMaxBetween -funksie 'n argument vir 'n ander pasgemaakte funksie, SpellNumber . Dit definieer die maksimum waarde, soos ons al baie keer voorheen gedoen het. Hierdie nommer word dan na teks omgeskakel.
In die skermkiekie hierbo kan jy sien hoe die SpellGetMaxBetween -funksie die maksimum getal tussen 100 en 500 en vind skakel dit dan om na teks.
Om UDF uit ander werkboeke te bel
As jy UDF in jou werkboek geskep het, beteken dit ongelukkig nie dat jy glad nie enige probleme sal ondervind nie.
In my ervaring skep die meeste gebruikers vroeër of later hul persoonlike versameling makro's en pasgemaakte funksies om individuele prosesse en berekeninge te outomatiseer. En hier ontstaan die probleem - die kode van gebruikergedefinieerde funksies in Visual Basic moet iewers gestoor word om later in die werk gebruik te word.
Om die pasgemaakte funksie toe te pas, moet die werkboek waar jy dit gestoor het oop wees in jou Excel. As dit nie is nie, sal jy die #NAAM kry! fout wanneer jy dit probeer gebruik. Hierdie fout dui aan dat Excel nie die naam van die funksie ken wat jy in die formule wil gebruik nie.
Kom ons kyk na die maniere omwat jy die pasgemaakte funksies wat jy skep kan gebruik.
Metode 1. Voeg die werkboeknaam by die funksie
Jy kan die naam van die werkboek waarin dit geleë is spesifiseer voor die naam van die funksie. Byvoorbeeld, as jy 'n pasgemaakte funksie GetMaxBetween() in 'n werkboek genaamd My_Functions.xlsm gestoor het, dan moet jy die volgende formule invoer:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metode 2. Stoor al die UDF's in een algemene lêer
Stoor alle pasgemaakte funksies in een spesiale werkboek (byvoorbeeld, My_Functions.xlsm ) en kopieer die verlangde funksie daarvan na die huidige werkboek, indien nodig.
Elke keer as jy 'n nuwe pasgemaakte funksie skep, moet jy die kode daarvan dupliseer in die werkboek waarin jy dit gaan gebruik. Met hierdie metode kan verskeie ongerief opduik:
- As daar baie werklêers is, en die funksie is oral nodig, dan sal die kode in elke boek gekopieer moet word.
- Onthou om die werkboek in 'n makro-geaktiveerde formaat (.xlsm of .xlsb) te stoor.
- Wanneer so 'n lêer oopgemaak word, sal beskerming teen makro's elke keer 'n waarskuwing vertoon, wat bevestig moet word. Baie gebruikers word bang wanneer hulle 'n geel staafwaarskuwing sien wat hulle vra om makro's te aktiveer. Om te verhoed dat u hierdie boodskap sien, moet u Excel-beskerming heeltemal deaktiveer. Dit is egter dalk nie altyd korrek en veilig nie.
Ek dink jy sal met my saamstem dat die heeltyd 'n oopmaak van 'nlêer en om die kode van gebruikergedefinieerde funksies daaruit te kopieer of die naam van hierdie lêer in 'n formule te skryf, is nie die beste oplossing nie. dus het ons by die derde manier uitgekom.
Metode 3. Skep 'n Excel-byvoeglêer
Ek dink die beste manier is om gereeld gebruikte pasgemaakte funksies in 'n Excel-byvoeglêer te stoor . Voordele van die gebruik van die byvoeging:
- Jy moet die byvoeging net een keer aan Excel koppel. Daarna kan u die prosedures en funksies daarvan in enige lêer op hierdie rekenaar gebruik. Jy hoef nie jou werkboeke in .xlsm- en .xlsb-formate te stoor nie, aangesien die bronkode nie daarin gestoor sal word nie, maar in die byvoeginglêer.
- Jy sal nie meer deur makrosbeskerming gepla word nie, aangesien byvoegings verwys altyd na betroubare bronne.
- 'n Byvoeging is 'n aparte lêer. Dit is maklik om dit van rekenaar na rekenaar oor te dra, om dit met kollegas te deel.
Ons sal later meer praat oor die skep en gebruik van 'n byvoeging.
Gebruik byvoeging- ins om persoonlike funksies te stoor
Hoe skep ek my eie byvoeging? Kom ons gaan stap vir stap deur hierdie proses.
Stap 1. Skep die byvoeginglêer
Maak Microsoft Excel oop, skep 'n nuwe werkboek en stoor dit onder enige geskikte naam (byvoorbeeld, My_Functions) in byvoegingsformaat. Om dit te doen, gebruik die kieslys Lêer - Stoor as of die F12-sleutel. Maak seker dat jy die lêertipe Excel-byvoeging spesifiseer:
Jou byvoeging sal die uitbreiding .xlam hê.
Wenk. Neem kennis datby verstek berg Excel byvoegings in die C:\Users\[Jou_Naam]\AppData\Roaming\Microsoft\AddIns -lêergids. Ek beveel aan dat u die verstekligging aanvaar. As jy wil, kan jy enige ander vouer spesifiseer. Maar dan, wanneer u die byvoeging koppel, moet u die nuwe ligging met die hand vind en spesifiseer. As jy dit in die verstekmap stoor, hoef jy nie die byvoeging op jou rekenaar te soek nie. Excel sal dit outomaties lys.
Stap 2. Koppel die byvoeginglêer
Nou moet die byvoeging wat ons geskep het aan Excel gekoppel word. Dan sal dit outomaties gelaai word wanneer die program begin. Om dit te doen, gebruik die kieslys Lêer - Opsies - Byvoegings . Maak seker dat Excel-byvoegings in die Bestuur -veld gekies is. Klik op die Gaan -knoppie onderaan die venster. Merk ons byvoeging My_Functions in die venster wat verskyn. As jy dit nie in die lys sien nie, klik die Blaai -knoppie en blaai na die ligging van jou byvoeginglêer.
As jy 'n byvoeging gebruik om persoonlike funksies te stoor, is daar een eenvoudige reël om te volg. As jy die werkboek na 'n ander persoon oordra, maak seker dat jy ook 'n kopie van die byvoeging oordra wat die funksionaliteit bevat wat jy wil hê. Hulle moet dit op dieselfde manier verbind as wat jy nou gedoen het.
Stap 3. Voeg pasgemaakte funksies en makro's by die byvoeging
Ons byvoeging is aan Excel gekoppel, maar dit doen het geen funksionaliteit nienog. Om nuwe UDF's daarby te voeg, maak die Visual Basic Editor oop deur Alt + F11 te druk. Dan kan jy nuwe modules met VBA-kode byvoeg soos beskryf in my Skep UDF's-tutoriaal.
Kies jou byvoeginglêer ( My_Finctions.xlam ) in die VBAProject-venster. Gebruik die Insert - Module -kieslys om 'n pasgemaakte module by te voeg. Jy moet persoonlike funksies daarin skryf.
Jy kan óf die kode van 'n gebruikergedefinieerde funksie met die hand tik óf dit van iewers af kopieer.
Dit is al. Nou het jy jou eie byvoeging geskep, dit by Excel gevoeg en jy kan die UDF daarin gebruik. As jy meer UDF's wil gebruik, skryf net die kode in die byvoegingsmodule in die VBA-redigeerder en stoor dit.
Dit is dit vir vandag. Ons het geleer hoe om gebruikergedefinieerde funksies in jou werkboek te gebruik. Ons hoop regtig dat u hierdie riglyne nuttig vind. As jy enige vrae het, skryf in die kommentaar by hierdie artikel.