Avantatges i inconvenients de les funcions personalitzades a Excel

  • Comparteix Això
Michael Brown

Continuem amb la sèrie de tutorials sobre funcions definides per l'usuari. En els nostres articles anteriors, ens vam familiaritzar amb les funcions personalitzades i vam aprendre a crear-les i utilitzar-les. En aquest manual veurem les especificitats de l'ús d'aquestes funcions i veurem les diferències entre les UDF i les macros VBA.

En aquest tutorial, aprendrem el següent:

    Esperem que aquest article millori els vostres coneixements sobre UDF i us ajudi a utilitzar-los encara més eficaçment als vostres quaderns d'Excel.

    UDF i Macro són el mateix?

    Tant les funcions definides per l'usuari com VBA les macros es creen mitjançant l'editor VBA. Quina diferència hi ha entre ells i a què donar preferència?

    La diferència més important és que la funció realitza el càlcul i la macro realitza alguna acció. Una funció definida per l'usuari, com una funció normal d'Excel, s'ha d'escriure en una cel·la. Com a resultat de la seva execució, la cel·la retorna algun valor. Al mateix temps, és impossible canviar els valors d'altres cel·les, així com algunes propietats de la cel·la actual (en particular, el format). Tanmateix, podeu utilitzar una funció personalitzada en fórmules de format condicional.

    La macro UDF i VBA funcionen de diferents maneres. Per exemple, quan creeu una UDF al Visual Basic Editor, comenceu amb una instrucció Funció i acabeu amb una Funció final . Quan enregistreu una macro, comenceu amb asentència Sub i acaben amb un End Sub.

    No tots els operadors de Visual Basic es poden utilitzar per crear UDF. Per aquest motiu, una macro és una solució més versàtil.

    Una macro no requereix que l'usuari passi cap argument (ni pot acceptar cap argument), a diferència d'una funció definida per l'usuari.

    La qüestió és que algunes ordres de macros poden utilitzar adreces de cel·les o elements de format (per exemple, color). Si moveu cel·les, afegiu o elimineu files i columnes, canvieu el format de les cel·les, podreu "descompondre" fàcilment les vostres macros. Això és especialment possible si compartiu el vostre fitxer amb companys que no saben com funcionen les vostres macros.

    Per exemple, teniu un fitxer amb una macro que funciona perfectament. Aquesta fórmula calcula el percentatge de la cel·la A1 a A4. La macro canvia el color d'aquestes cel·les a groc. S'estableix un format de percentatge a la cel·la activa.

    Si vostè o algú altre decidiu inserir una fila nova, la macro continuarà buscant el valor a la cel·la A4 ( el paràmetre 4,1 de la vostra UDF), falla i retorna un error:

    En aquest cas, l'error s'ha produït a causa de la divisió per zero (cap valor en un fila). En cas que la macro realitzi, diguem, la suma, simplement obtindreu un resultat equivocat. Però no ho sabràs.

    A diferència de les macros, les funcions definides per l'usuari no poden provocar una situació tan desagradable.

    A continuació veus el rendiment deels mateixos càlculs amb una UDF. Aquí podeu especificar cel·les d'entrada a qualsevol part del full de treball i no trobareu cap problema inesperat quan el canvieu.

    He escrit la fórmula següent a C3:

    =UDF_vs_Macro(A1,A4)

    Després vaig inserir una fila en blanc i la fórmula va canviar com podeu veure a la captura de pantalla de dalt.

    Ara podem moure una cel·la d'entrada o una cel·la amb una funció a qualsevol lloc. El resultat sempre serà correcte.

    Un avantatge addicional d'utilitzar les UDF és que s'actualitzen automàticament quan canvia el valor de la cel·la d'entrada. Quan feu servir macros, heu d'assegurar-vos sempre que totes les dades estiguin actualitzades.

    Tenint en compte aquest exemple, preferiria utilitzar UDF sempre que sigui possible i utilitzar macros només per a altres activitats que no siguin de càlcul.

    Limitacions i desavantatges d'utilitzar UDF

    Ja he esmentat els avantatges de l'UDF més amunt. En resum, pot realitzar càlculs que no són possibles amb les funcions estàndard d'Excel. A més, pot desar i utilitzar fórmules llargues i complexes, convertint-les en una única funció. I no hauràs d'escriure fórmules complicades una i altra vegada.

    Ara parlem amb més detall de les mancances de l'UDF:

    • La creació d'UDF requereix l'ús de VBA. No hi ha manera d'evitar-ho. Això vol dir que l'usuari no pot gravar l'UDF de la mateixa manera que una macro d'Excel. Heu de crear l'UDF vosaltres mateixos. Tanmateix, podeu copiar ienganxeu parts del codi macro gravat anteriorment a la vostra funció. Només cal que tingueu en compte les limitacions de les funcions personalitzades.
    • Un altre inconvenient de l'UDF és que, com qualsevol altra funció d'Excel, només pot retornar un valor únic o una matriu de valors a una cel·la. Simplement fa càlculs, res més.
    • Si voleu compartir el vostre llibre de treball amb els vostres companys, assegureu-vos de desar les UDF al mateix fitxer. En cas contrari, les vostres funcions personalitzades no funcionaran per a ells.
    • Les funcions personalitzades creades amb l'editor VBA són més lentes que les funcions normals. Això es nota especialment en taules grans. Malauradament, fins ara, VBA és un llenguatge de programació molt lent. Per tant, si teniu moltes dades, proveu d'utilitzar funcions estàndard sempre que sigui possible o creeu UDF amb la funció LAMBDA.

    Limitacions de les funcions personalitzades:

    • Les UDF són dissenyat per realitzar càlculs i retornar un valor. No es poden utilitzar en lloc de macros.
    • No poden canviar el contingut de cap altra cel·la (només la cel·la activa).
    • Els noms de les funcions han de seguir determinades regles. Per exemple, no podeu utilitzar un nom que coincideixi amb un nom de funció nadiu d'Excel o una adreça de cel·la, com ara AB123.
    • La vostra funció personalitzada no pot contenir espais al nom, però pot incloure el caràcter de subratllat. Tanmateix, el mètode preferit és utilitzar majúscules al començament de cada nouparaula (per exemple, GetMaxBetween).
    • Una UDF no pot copiar i enganxar cel·les a altres àrees del full de treball.
    • No poden canviar el full de treball actiu.
    • Les UDF poden" t canviar el format a la cel·la activa. Si voleu canviar el format d'una cel·la quan es mostren valors diferents, hauríeu d'utilitzar el format condicional.
    • No poden obrir llibres addicionals.
    • No es poden utilitzar per executar macros amb Application.OnTime. .
    • No es pot crear una funció definida per l'usuari amb la gravadora de macros.
    • Les funcions no apareixen a Desenvolupador > Diàleg Macros .
    • Les vostres funcions apareixeran al quadre de diàleg ( Insereix > Funció ) i a la llista de funcions només si es declaren com a Públiques (aquest és el valor predeterminat, tret que s'indiqui el contrari).
    • Cap funció declarada com a Privada no apareixerà a la llista de funcions.

    Una operació bastant lenta , així com algunes restriccions d'ús, us poden fer pensar: "Quin és l'ús d'aquestes funcions personalitzades?"

    Poden ser útils, i ho fan si tenim en compte les limitacions que se'ls imposen. Si apreneu a crear i utilitzar correctament les UDF, podeu escriure la vostra biblioteca de funcions. Això ampliarà molt la vostra capacitat de treballar amb dades a Excel.

    Per mi, les funcions personalitzades us permeten estalviar molt temps. I què tal tu? Ja has provat de crear la teva pròpia UDF? Et va agradarmillor que les funcions bàsiques d'Excel? Comentem-ho als comentaris :)

    Michael Brown és un entusiasta de la tecnologia dedicat amb una passió per simplificar processos complexos mitjançant eines de programari. Amb més d'una dècada d'experiència en la indústria tecnològica, ha perfeccionat les seves habilitats en Microsoft Excel i Outlook, així com en Google Sheets i Docs. El bloc de Michael es dedica a compartir els seus coneixements i experiència amb altres persones, oferint consells i tutorials fàcils de seguir per millorar la productivitat i l'eficiència. Tant si sou un professional experimentat com si sou un principiant, el bloc de Michael ofereix valuoses idees i consells pràctics per treure el màxim profit d'aquestes eines de programari essencials.