Indholdsfortegnelse
I dag fortsætter vi med at udforske brugerdefinerede Excel-funktioner. Da du allerede ved, hvordan du opretter UDF'er (og forhåbentlig har du også prøvet at anvende dem i Excel), skal vi gå lidt dybere og lære, hvordan du brugerdefinerede funktioner kan bruges og lagre dem i Excel.
Desuden viser vi dig, hvordan du nemt kan gemme dine funktioner i en Excel-tilføjelsesfil, så du kan bruge dem senere med få klik.
Så her er, hvad vi skal tale om:
Forskellige måder at bruge UDF i Excel på
Brug af UDF'er i regneark
Når du har kontrolleret, at dine UDF'er fungerer korrekt, kan du bruge dem i Excel-formler eller i VBA-kode.
Du kan anvende brugerdefinerede funktioner i en Excel-arbejdsbog på samme måde, som du bruger almindelige funktioner. Du kan f.eks. skrive nedenstående formel i en celle:
= GetMaxBetween(A1:A6,10,50)
UDF kan bruges i kombination med almindelige funktioner. F.eks. kan du tilføje tekst til den beregnede maksimumsværdi:
= CONCATENATE("Maksimal værdi mellem 10 og 50 er ", GetMaxBetween(A1: A6,10,50))
Du kan se resultatet i skærmbilledet nedenfor:
Du kan finde det tal, der både er maksimalt og ligger i intervallet fra 10 til 50.
Lad os kontrollere en anden formel:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0))), den
Den brugerdefinerede funktion GetMaxBetween kontrollerer området B2:B9 og finder det maksimale tal mellem 10 og 50. Ved hjælp af INDEX + MATCH får vi derefter det produktnavn, der passer til denne maksimale værdi:
Som du kan se, er brugen af brugerdefinerede funktioner ikke meget anderledes end almindelige Excel-funktioner.
Når du gør dette, skal du huske, at en brugerdefineret funktion kun kan returnere en værdi, men ikke kan udføre andre handlinger. Læs mere om begrænsningerne for brugerdefinerede funktioner.
Brug af UDF i VBA-procedurer og -funktioner
UDF'er kan også bruges i VBA-makroer. Nedenfor kan du se makrokoden, der leder efter den maksimale værdi i intervallet fra 10 til 50 i den kolonne, der indeholder den aktive celle.
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 SubMakrokoden indeholder den brugerdefinerede funktion
GetMaxBetween(.Cells, 10, 50)
Den finder den maksimale værdi i den aktive kolonne. Denne værdi bliver derefter fremhævet. Du kan se resultatet af makroen i skærmbilledet nedenfor.
En brugerdefineret funktion kan også bruges inde i en anden brugerdefineret funktion. Tidligere i vores blog har vi set på problemet med at konvertere et tal til tekst ved hjælp af den brugerdefinerede funktion ved navn SpellNumber .
Med dens hjælp kan vi få den maksimale værdi fra intervallet og straks skrive den ned som tekst.
For at gøre dette vil vi oprette en ny brugerdefineret funktion, hvori vi vil bruge funktionerne GetMaxBetween og SpellNumber som vi allerede kender.
Funktion SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween(GetMaxBetween (rngCells, MinNum, MaxNum)) End FunctionSom du kan se, er den GetMaxBetween funktion er et argument for en anden brugerdefineret funktion, SpellNumber Det definerer den maksimale værdi, som vi har gjort det mange gange før. Dette tal konverteres derefter til tekst.
I skærmbilledet ovenfor kan du se, hvordan SpellGetMaxBetween funktionen finder det maksimale tal mellem 100 og 500 og konverterer det derefter til tekst.
Kald UDF fra andre arbejdsbøger
Hvis du har oprettet UDF i din projektmappe, betyder det desværre ikke, at du ikke vil få problemer overhovedet.
Min erfaring er, at de fleste brugere før eller siden opretter deres personlige samling af makroer og brugerdefinerede funktioner for at automatisere individuelle processer og beregninger. Og her opstår problemet - koden for brugerdefinerede funktioner i Visual Basic skal gemmes et sted for at kunne bruges senere i arbejdet.
For at kunne anvende den brugerdefinerede funktion skal det regneark, hvor du har gemt den, være åbent i Excel. Hvis det ikke er tilfældet, får du fejlen #NAME!, når du forsøger at anvende den. Denne fejl angiver, at Excel ikke kender navnet på den funktion, du vil bruge i formlen.
Lad os se på de måder, du kan bruge de brugerdefinerede funktioner, du opretter.
Metode 1. Tilføj arbejdsbogens navn til funktionen
Du kan angive navnet på det regneark, som den er placeret i, før navnet på funktionen. Hvis du f.eks. gemmer en brugerdefineret funktion GetMaxBetween() i en projektmappe med navnet Mine_Funktioner.xlsm , skal du indtaste følgende formel:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metode 2. Gem alle UDF'er i én fælles fil
Gem alle brugerdefinerede funktioner i en særlig projektmappe (f.eks, Mine_Funktioner.xlsm ) og kopier den ønskede funktion fra den til den aktuelle projektmappe, hvis det er nødvendigt.
Hver gang du opretter en ny brugerdefineret funktion, skal du kopiere koden i det regneark, hvor du vil bruge den. Med denne metode kan der opstå flere ulemper:
- Hvis der er mange arbejdsfiler, og funktionen er nødvendig alle steder, skal koden kopieres ind i hver enkelt bog.
- Husk at gemme arbejdsmappen i et format, der er makroaktiveret (.xlsm eller .xlsb).
- Når du åbner en sådan fil, vil beskyttelsen mod makroer hver gang vise en advarsel, som skal bekræftes. Mange brugere bliver bange, når de ser en advarsel med en gul bjælke, der beder dem aktivere makroer. For at undgå at se denne meddelelse skal du deaktivere Excel-beskyttelsen helt. Dette er dog ikke altid korrekt og sikkert.
Jeg tror, at du vil være enig med mig i, at det ikke er den bedste løsning at åbne en fil og kopiere koden for brugerdefinerede funktioner fra den eller skrive navnet på denne fil i en formel.Derfor kom vi til den tredje måde.
Metode 3. Opret en Excel-tilføjelsesfil
Jeg tror, at den bedste måde er at gemme ofte anvendte brugerdefinerede funktioner i en Excel add-in-fil. Fordele ved at bruge add-in'en:
- Du skal kun forbinde tilføjelsesprogrammet til Excel én gang. Derefter kan du bruge dets procedurer og funktioner i enhver fil på denne computer. Du behøver ikke at gemme dine arbejdsmapper i formaterne .xlsm og .xlsb, da kildekoden ikke gemmes i dem, men i tilføjelsesprogrammet.
- Du vil ikke længere blive generet af beskyttelse af makroer, da tilføjelsesprogrammer altid henviser til pålidelige kilder.
- En tilføjelsesfil er en separat fil. Det er nemt at overføre den fra computer til computer og dele den med kolleger.
Vi taler mere om at oprette og bruge en tilføjelsesprogram senere.
Brug af tilføjelsesprogrammer til at gemme brugerdefinerede funktioner
Hvordan opretter jeg min egen tilføjelse? Lad os gennemgå denne proces trin for trin.
Trin 1. Opret tilføjelsesfilen
Åbn Microsoft Excel, opret en ny projektmappe og gem den under et passende navn (f.eks. My_Functions) i tilføjelsesformat. Dette gøres ved at bruge menuen Fil - Gem som eller F12-tasten. Sørg for at angive filtypen Excel Add-in :
Dit tilføjelsesprogram vil have udvidelsen .xlam.
Tip. Bemærk, at Excel som standard gemmer tilføjelsesprogrammer i C:\Users\[Your_Name]\AppData\Roaming\Microsoft\AddIns Jeg anbefaler, at du accepterer standardplaceringen. Hvis du ønsker det, kan du angive en anden mappe. Men når du tilslutter tilføjelsesprogrammet, skal du så manuelt finde og angive dets nye placering. Hvis du gemmer det i standardmappen, behøver du ikke at lede efter tilføjelsesprogrammet på din computer. Excel vil automatisk vise det på listen.
Trin 2. Tilslut tilføjelsesfilen
Nu skal det tilføjelsesprogram, vi har oprettet, forbindes med Excel. Så vil det automatisk blive indlæst, når programmet starter. Det gør du ved at bruge menuen Fil - Indstillinger - Tilføjelser . Sørg for Excel-tilføjelser er valgt i den Administrer feltet. Klik på feltet Gå til knappen nederst i vinduet. I det vindue, der vises, markerer du vores tilføjelsesprogram My_Functions. Hvis du ikke kan se det på listen, skal du klikke på knappen Gennemse knappen, og gå til placeringen af din tilføjelsesfil.
Hvis du bruger et tilføjelsesprogram til at gemme brugerdefinerede funktioner, er der en enkel regel, du skal følge: Hvis du overfører regnearket til en anden person, skal du sørge for også at overføre en kopi af det tilføjelsesprogram, der indeholder den ønskede funktionalitet. De skal forbinde det på samme måde som nu.
Trin 3. Tilføj brugerdefinerede funktioner og makroer til tilføjelsesprogrammet
Vores tilføjelsesprogram er forbundet til Excel, men det har endnu ikke nogen funktionalitet. Hvis du vil tilføje nye UDF'er til det, skal du åbne Visual Basic Editor ved at trykke på Alt + F11 . Derefter kan du tilføje nye moduler med VBA-kode som beskrevet i min vejledning om oprettelse af UDF'er.
Vælg din tilføjelsesfil ( Mine_Finctions.xlam ) i VBAProject-vinduet. Brug Indsæt - modul menuen for at tilføje et brugerdefineret modul. Du skal skrive brugerdefinerede funktioner i det.
Du kan enten skrive koden for en brugerdefineret funktion manuelt eller kopiere den et sted fra.
Det er alt. Nu har du oprettet dit eget tilføjelsesmodul, tilføjet det til Excel og kan bruge UDF'en i det. Hvis du vil bruge flere UDF'er, skal du blot skrive koden i tilføjelsesmodulet i VBA-editoren og gemme den.
Det var det hele for i dag. Vi har lært, hvordan du bruger brugerdefinerede funktioner i din projektmappe. Vi håber virkelig, at du finder disse retningslinjer nyttige. Hvis du har spørgsmål, kan du skrive i kommentarerne til denne artikel.