Fördelar och nackdelar med anpassade funktioner i Excel

  • Dela Detta
Michael Brown

Vi fortsätter serien av handledningar om användardefinierade funktioner. I våra tidigare artiklar bekantade vi oss med anpassade funktioner och lärde oss hur man skapar och använder dem. I den här handledningen kommer vi att titta på detaljerna i användningen av dessa funktioner och se skillnaderna mellan UDF:er och VBA-makron.

I den här handledningen lär vi oss följande:

    Vi hoppas att den här artikeln kommer att öka dina kunskaper om UDF och hjälpa dig att använda dem ännu mer effektivt i dina Excel-arbetsböcker.

    Är UDF och Macro samma sak?

    Både användardefinierade funktioner och VBA-makron skapas med hjälp av VBA-redigeraren. Vad är skillnaden mellan dem och vad ska man föredra?

    Den viktigaste skillnaden är att funktionen utför beräkningen och att makrot utför en åtgärd. En användardefinierad funktion, liksom en vanlig Excel-funktion, måste skrivas i en cell. När den utförs returnerar cellen ett värde. Samtidigt är det omöjligt att ändra värdena i andra celler och vissa egenskaper hos den aktuella cellen (särskilt,Du kan dock använda en anpassad funktion i formler för villkorlig formatering.

    UDF- och VBA-makron fungerar på olika sätt. När du skapar en UDF i Visual Basic Editor börjar du till exempel med ett uttalande Funktion och avslutas med en Slutfunktion När du spelar in ett makro börjar du med ett uttalande. Under och avslutas med en Slutar Sub.

    Alla Visual Basic-operatorer kan inte användas för att skapa UDF:er. Därför är ett makro en mer mångsidig lösning.

    Ett makro kräver inte att användaren lämnar några argument (och kan inte heller ta emot några argument), till skillnad från en användardefinierad funktion.

    Poängen är att vissa kommandon i makron kan använda celladresser eller formateringselement (t.ex. färg). Om du flyttar celler, lägger till eller tar bort rader och kolumner och ändrar cellformatet kan du lätt "bryta" dina makron. Detta är särskilt möjligt om du delar din fil med kollegor som inte vet hur dina makron fungerar.

    Du har till exempel en fil med ett perfekt fungerande makro. Formeln beräknar procentsatsen för cellerna A1 till A4. Makrot ändrar färgen på dessa celler till gul. Ett procentformat anges i den aktiva cellen.

    Om du eller någon annan bestämmer sig för att infoga en ny rad fortsätter makrot att leta efter värdet i A4-cellen (parametern 4,1 i din UDF), misslyckas och returnerar ett fel:

    I det här fallet inträffade felet på grund av division med noll (inget värde i en nytillagd rad). Om makrot utför, låt oss säga, summering, får du helt enkelt ett felaktigt resultat. Men du kommer inte att veta om det.

    Till skillnad från makron kan användardefinierade funktioner inte orsaka en sådan obehaglig situation.

    Nedan ser du hur samma beräkningar utförs med hjälp av en UDF. Här kan du ange inmatningsceller var som helst i kalkylbladet och du kommer inte att få några oväntade problem när du ändrar dem.

    Jag skrev följande formel i C3:

    =UDF_vs_Macro(A1,A4)

    Sedan infogade jag en tom rad och formeln ändrades som du kan se i skärmdumpen ovan.

    Nu kan vi flytta en inmatningscell eller en cell med en funktion var som helst, och resultatet blir alltid korrekt.

    En ytterligare fördel med att använda UDF:er är att de uppdateras automatiskt när värdet i inmatningscellen ändras. När du använder makron måste du alltid se till att alla data är uppdaterade.

    Med det här exemplet i åtanke skulle jag föredra att använda UDF:er närhelst det är möjligt och använda makron endast för andra aktiviteter som inte är beräkningar.

    Begränsningar och nackdelar med att använda UDF

    Jag har redan nämnt fördelarna med UDF ovan. I korthet kan den utföra beräkningar som inte är möjliga med vanliga Excel-funktioner. Dessutom kan den spara och använda långa och komplexa formler och omvandla dem till en enda funktion. Du behöver inte skriva komplicerade formler om och om igen.

    Låt oss nu tala mer ingående om UDF:s brister:

    • För att skapa UDF:er krävs det att man använder VBA. Det finns inget sätt att komma runt det. Det innebär att användaren inte kan registrera UDF:n på samma sätt som ett Excel-makro. Du måste skapa UDF:n själv. Du kan dock kopiera och klistra in delar av den tidigare registrerade makrokoden i din funktion. Du måste bara vara medveten om begränsningarna för anpassade funktioner.
    • En annan nackdel med UDF är att den precis som alla andra Excel-funktioner endast kan returnera ett enda värde eller en array av värden till en cell. Den utför bara beräkningar, inget annat.
    • Om du vill dela din arbetsbok med dina kollegor måste du spara dina UDF:er i samma fil, annars fungerar inte dina anpassade funktioner för dem.
    • Anpassade funktioner som skapas med VBA-editorn är långsammare än vanliga funktioner. Detta märks särskilt i stora tabeller. Tyvärr är VBA ett mycket långsamt programmeringsspråk än så länge. Om du har mycket data bör du därför försöka använda standardfunktioner när det är möjligt eller skapa UDF:er med hjälp av LAMBDA-funktionen.

    Begränsningar för anpassade funktioner:

    • UDF:er är utformade för att utföra beräkningar och returnera ett värde. De kan inte användas i stället för makron.
    • De kan inte ändra innehållet i andra celler (endast den aktiva cellen).
    • Funktionsnamnen måste följa vissa regler, till exempel kan du inte använda ett namn som matchar ett inhemskt Excel-funktionsnamn eller en celladress, till exempel AB123.
    • Din anpassade funktion kan inte innehålla blanksteg i namnet, men den kan innehålla ett underscore-tecken. Det bästa sättet är dock att använda stora bokstäver i början av varje nytt ord (t.ex. GetMaxBetween).
    • En UDF kan inte kopiera och klistra in celler till andra områden i arbetsbladet.
    • De kan inte ändra det aktiva arbetsbladet.
    • UDF:er kan inte ändra formateringen i den aktiva cellen. Om du vill ändra formateringen i en cell när olika värden visas ska du använda villkorlig formatering.
    • De kan inte öppna ytterligare böcker.
    • De kan inte användas för att köra makron med hjälp av Application.OnTime.
    • En användardefinierad funktion kan inte skapas med hjälp av makroinspelaren.
    • Funktioner visas inte i Utvecklare> Makroner dialog.
    • Dina funktioner visas i dialogrutan ( Infoga> Funktion ) och i förteckningen över funktioner endast om de är deklarerade som Offentlig (detta är standard om inget annat anges).
    • Alla funktioner som deklareras som Privat visas inte i funktionslistan.

    En ganska långsam drift och vissa begränsningar i användningen kan få dig att tänka: "Vad är nyttan med dessa anpassade funktioner?"

    De kan vara användbara, och det gör de om vi är medvetna om de begränsningar som gäller för dem. Om du lär dig att skapa och använda UDF:er på rätt sätt kan du skriva ditt eget funktionsbibliotek. Detta kommer att öka din förmåga att arbeta med data i Excel avsevärt.

    För mig är anpassade funktioner en stor tidsbesparing. Och du då? Har du redan provat att skapa din egen UDF? Gillade du den bättre än de grundläggande Excel-funktionerna? Låt oss diskutera det i kommentarerna :)

    Michael Brown är en hängiven teknikentusiast med en passion för att förenkla komplexa processer med hjälp av mjukvaruverktyg. Med mer än ett decenniums erfarenhet inom teknikbranschen har han finslipat sina kunskaper i Microsoft Excel och Outlook, samt Google Sheets och Docs. Michaels blogg är tillägnad att dela med sig av sin kunskap och expertis med andra, och tillhandahåller lätta att följa tips och handledningar för att förbättra produktiviteten och effektiviteten. Oavsett om du är en erfaren proffs eller nybörjare, erbjuder Michaels blogg värdefulla insikter och praktiska råd för att få ut det mesta av dessa viktiga programvaruverktyg.