Innehållsförteckning
Idag fortsätter vi att utforska anpassade Excel-funktioner. Eftersom du redan vet hur man skapar UDF:er (och jag hoppas att du också har provat att använda dem i Excel), ska vi gräva lite djupare och lära oss hur man använder och lagrar användardefinierade funktioner i Excel.
Dessutom visar vi hur du enkelt kan spara dina funktioner i en Excel-tilläggsfil för att använda dem senare med några få klick.
Så här ska vi tala om det här:
Olika sätt att använda UDF i Excel
Använda UDF:er i kalkylblad
När du har kontrollerat att dina UDF:er fungerar korrekt kan du använda dem i Excel-formler eller i VBA-kod.
Du kan använda anpassade funktioner i en Excel-arbetsbok på samma sätt som vanliga funktioner. Skriv till exempel nedanstående formel i en cell:
= GetMaxBetween(A1:A6,10,50)
UDF kan användas i kombination med vanliga funktioner, t.ex. för att lägga till text till det beräknade maximala värdet:
= CONCATENATE("Högsta värde mellan 10 och 50 är ", GetMaxBetween(A1: A6,10,50))
Du kan se resultatet i skärmbilden nedan:
Du kan hitta det tal som både är maximalt och ligger inom intervallet 10-50.
Låt oss kontrollera en annan formel:
= INDEX(A2:A9, MATCH(GetMaxBetween(B2:B9, F1, F2), B2:B9,0)), den
Den anpassade funktionen GetMaxBetween kontrollerar intervallet B2:B9 och hittar det högsta talet mellan 10 och 50. Med hjälp av INDEX + MATCH får vi sedan fram det produktnamn som matchar det högsta värdet:
Som du kan se skiljer sig användningen av anpassade funktioner inte så mycket från vanliga Excel-funktioner.
Kom ihåg att en användardefinierad funktion endast kan returnera ett värde och inte utföra några andra åtgärder. Läs mer om begränsningarna för användardefinierade funktioner.
Använda UDF i VBA-procedurer och funktioner
UDF:er kan också användas i VBA-makron. Nedan visas makrokoden som letar efter det högsta värdet i intervallet 10-50 i den kolumn som innehåller den aktiva cellen.
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 innehåller den anpassade funktionen
GetMaxBetween(.Cells, 10, 50)
Det hittar det högsta värdet i den aktiva kolumnen. Detta värde markeras sedan. Du kan se resultatet av makrot i skärmbilden nedan.
En anpassad funktion kan också användas inuti en annan anpassad funktion. Tidigare i vår blogg tittade vi på problemet med att konvertera ett tal till text med hjälp av den anpassade funktionen som heter SpellNumber .
Med hjälp av den kan vi ta fram det högsta värdet från intervallet och omedelbart skriva ner det som text.
För att göra detta skapar vi en ny anpassad funktion där vi använder funktionerna GetMaxBetween och SpellNumber som vi redan känner till.
Funktion SpellGetMaxBetween(rngCells As Range, MinNum, MaxNum) SpellGetMaxBetween = SpellNumber(GetMaxBetween (rngCells, MinNum, MaxNum)) SlutfunktionSom du kan se är GetMaxBetween funktionen är ett argument till en annan anpassad funktion, SpellNumber Det definierar det maximala värdet, vilket vi har gjort många gånger tidigare. Detta tal omvandlas sedan till text.
I skärmbilden ovan kan du se hur den SpellGetMaxBetween funktionen hittar det högsta talet mellan 100 och 500 och omvandlar det sedan till text.
Kalla UDF från andra arbetsböcker
Om du har skapat UDF i din arbetsbok betyder det tyvärr inte att du inte kommer att få några problem alls.
Enligt min erfarenhet skapar de flesta användare förr eller senare sin personliga samling av makron och anpassade funktioner för att automatisera enskilda processer och beräkningar. Och här uppstår problemet - koden för användardefinierade funktioner i Visual Basic måste lagras någonstans för att kunna användas senare i arbetet.
För att kunna använda den anpassade funktionen måste arbetsboken där du sparade den vara öppen i Excel. Om den inte är det får du felmeddelandet #NAME! när du försöker använda den. Felet visar att Excel inte känner till namnet på den funktion som du vill använda i formeln.
Låt oss ta en titt på hur du kan använda de anpassade funktioner du skapar.
Metod 1. Lägg till arbetsboksnamnet i funktionen
Du kan ange namnet på den arbetsbok där den finns före namnet på funktionen. Om du till exempel sparar en anpassad funktion GetMaxBetween() i en arbetsbok som heter Mina_funktioner.xlsm måste du ange följande formel:
= My_Functions.xlsm!GetMaxBetween(A1:A6,10,50)
Metod 2: Lagra alla UDF:er i en gemensam fil.
Spara alla anpassade funktioner i en särskild arbetsbok (t.ex, Mina_funktioner.xlsm ) och kopiera den önskade funktionen därifrån till den aktuella arbetsboken, om det behövs.
Varje gång du skapar en ny anpassad funktion måste du kopiera koden i den arbetsbok där du ska använda den. Med den här metoden kan flera olägenheter uppstå:
- Om det finns många arbetsfiler och funktionen behövs överallt måste koden kopieras till varje bok.
- Kom ihåg att spara arbetsboken i ett makroaktiverat format (.xlsm eller .xlsb).
- När du öppnar en sådan fil visas en varning varje gång som måste bekräftas. Många användare blir rädda när de ser en varning i en gul balk som ber dem att aktivera makron. För att undvika att se det här meddelandet måste du inaktivera Excel-skyddet helt och hållet. Detta är dock inte alltid korrekt och säkert.
Jag tror att du håller med mig om att det inte alltid är den bästa lösningen att öppna en fil och kopiera koden för användardefinierade funktioner från den eller att skriva namnet på den här filen i en formel.Vi kom därför fram till det tredje sättet.
Metod 3. Skapa en Excel-tilläggsfil
Jag tror att det bästa sättet är att lagra ofta använda anpassade funktioner i en Excel-tilläggsfil. Fördelar med att använda tilläggsfilen:
- Du behöver bara ansluta tillägget till Excel en gång. Därefter kan du använda dess förfaranden och funktioner i vilken fil som helst på din dator. Du behöver inte spara dina arbetsböcker i formaten .xlsm och .xlsb eftersom källkoden inte lagras i dem utan i tilläggsfilen.
- Du kommer inte längre att besväras av macrosskydd eftersom tillägg alltid hänvisar till pålitliga källor.
- Ett tillägg är en separat fil. Det är lätt att överföra den från dator till dator och dela den med kollegor.
Vi kommer att prata mer om att skapa och använda ett tillägg senare.
Använda tillägg för att lagra anpassade funktioner
Hur skapar jag mitt eget tillägg? Låt oss gå igenom processen steg för steg.
Steg 1. Skapa tilläggsfilen
Öppna Microsoft Excel, skapa en ny arbetsbok och spara den under ett lämpligt namn (t.ex. My_Functions) i tilläggsformat. Använd menyn Fil - Spara som eller F12-tangenten. Se till att ange filtypen Excel-tillägg :
Tillägget kommer att ha tillägget .xlam.
Tips. Observera att Excel som standard lagrar tilläggsprogram i C:\Users\[Ditt_namn]\AppData\Roaming\Microsoft\AddIns Jag rekommenderar att du accepterar standardplaceringen. Om du vill kan du ange en annan mapp. Men när du ansluter tillägget måste du då hitta och ange dess nya plats manuellt. Om du sparar det i standardmappen behöver du inte leta efter tillägget på din dator. Excel listar det automatiskt.
Steg 2. Anslut tilläggsfilen
Nu måste tillägget som vi har skapat anslutas till Excel. Då laddas det automatiskt när programmet startar. För att göra detta använder du menyn Fil - Alternativ - Tilläggsfunktioner . Se till att Excel-tillägg väljs i Hantera fältet. Klicka på fältet Gå till längst ner i fönstret. I fönstret som visas markerar du vårt tillägg My_Functions. Om du inte ser det i listan klickar du på knappen Bläddra på och bläddra till platsen för din tilläggsfil.
Om du använder ett tillägg för att lagra anpassade funktioner finns det en enkel regel att följa: Om du överför arbetsboken till en annan person ska du se till att du också överför en kopia av tillägget som innehåller den funktion du vill ha. De ska ansluta den på samma sätt som du gjorde nu.
Steg 3. Lägg till egna funktioner och makron till tillägget
Vår tilläggsmodul är ansluten till Excel, men har ännu inte någon funktionalitet. För att lägga till nya UDF:er öppnar du Visual Basic Editor genom att trycka på Alt + F11 . Därefter kan du lägga till nya moduler med VBA-kod enligt beskrivningen i min handledning Skapa UDF:er.
Välj din tilläggsfil ( Mina_Finktioner.xlam ) i fönstret VBAProject. Använd Infoga - modul menyn för att lägga till en anpassad modul. Du måste skriva anpassade funktioner i den.
Du kan antingen skriva in koden för en användardefinierad funktion manuellt eller kopiera den från någonstans.
Nu har du skapat din egen tilläggsmodul, lagt till den i Excel och kan använda UDF:en i den. Om du vill använda fler UDF:er skriver du bara koden i tilläggsmodulen i VBA-editorn och sparar den.
Det var allt för idag. Vi har lärt oss hur du använder användardefinierade funktioner i din arbetsbok. Vi hoppas verkligen att du tycker att dessa riktlinjer är till hjälp. Om du har några frågor kan du skriva i kommentarerna till den här artikeln.