Vantaxes e inconvenientes das funcións personalizadas en Excel

  • Comparte Isto
Michael Brown

Continuamos coa serie de tutoriais sobre funcións definidas polo usuario. Nos nosos artigos anteriores, familiarizamos coas funcións personalizadas e aprendemos a crealas e usalas. Neste manual analizaremos as características específicas do uso destas funcións e veremos as diferenzas entre as UDF e as macros VBA.

Neste titorial, aprenderemos o seguinte:

    Esperamos que este artigo mellore os teus coñecementos sobre UDF e che axude a utilizalos aínda máis eficazmente nos teus libros de Excel.

    UDF e Macro son o mesmo?

    Tanto as funcións definidas polo usuario como VBA as macros créanse usando o editor VBA. Cal é a diferenza entre eles e a que dar preferencia?

    A diferenza máis importante é que a función realiza o cálculo e a macro realiza algunha acción. Unha función definida polo usuario, como unha función normal de Excel, debe escribirse nunha cela. Como resultado da súa execución, a cela devolve algún valor. Ao mesmo tempo, é imposible cambiar os valores doutras celas, así como algunhas propiedades da cela actual (en particular, o formato). Non obstante, pode utilizar unha función personalizada nas fórmulas de formato condicional.

    A macro UDF e VBA funcionan de diferentes xeitos. Por exemplo, cando crea unha UDF no Editor de Visual Basic, comeza cunha instrución Función e remata cunha Fin función . Cando gravas unha macro, comezas cunsentencia Sub e remata cun End Sub.

    Non todos os operadores de Visual Basic se poden usar para crear UDF. Por este motivo, unha macro é unha solución máis versátil.

    Unha macro non require que o usuario pase ningún argumento (nin pode aceptar ningún argumento), a diferenza dunha función definida polo usuario.

    A cuestión é que algúns comandos de macros poden usar enderezos de cela ou elementos de formato (por exemplo, a cor). Se moves celas, engades ou eliminas filas e columnas, cambias o formato das celas, podes "romper" facilmente as túas macros. Isto é especialmente posible se compartes o teu ficheiro con compañeiros que non saben como funcionan as túas macros.

    Por exemplo, tes un ficheiro cunha macro que funciona perfectamente. Esta fórmula calcula a porcentaxe da cela A1 a A4. A macro cambia a cor destas celas a amarela. Establécese un formato de porcentaxe na cela activa.

    Se vostede ou outra persoa decide inserir unha nova fila, a macro seguirá buscando o valor na cela A4 ( o parámetro 4,1 da túa UDF), falla e devolve un erro:

    Neste caso, o erro ocorreu debido á división por cero (sen valor nun fila). No caso de que a macro realice, digamos, a suma, entón simplemente obterás un resultado incorrecto. Pero non o saberás.

    A diferenza das macros, as funcións definidas polo usuario non poden provocar unha situación tan desagradable.

    Abaixo ves o rendemento deos mesmos cálculos usando unha UDF. Aquí podes especificar celas de entrada en calquera lugar da folla de traballo e non terás problemas inesperados ao cambiala.

    Escribín a seguinte fórmula en C3:

    =UDF_vs_Macro(A1,A4)

    Entón inseriu unha fila en branco e a fórmula cambiou como podes ver na captura de pantalla anterior.

    Agora podemos mover unha cela de entrada ou unha cela cunha función a calquera lugar. O resultado sempre será correcto.

    Unha vantaxe adicional do uso das UDF é que se actualizan automaticamente cando cambia o valor da cela de entrada. Ao usar macros, sempre debes asegurarte de que todos os datos estean actualizados.

    Tenndo presente este exemplo, prefiro usar UDF sempre que sexa posible e usar macros só para outras actividades que non sexan de cálculo.

    Limitacións e desvantaxes do uso de UDF

    Xa mencionei as vantaxes de UDF anteriormente. En resumo, pode realizar cálculos que non son posibles coas funcións estándar de Excel. Ademais, pode gardar e utilizar fórmulas longas e complexas, converténdoas nunha única función. E non terás que escribir fórmulas complicadas unha e outra vez.

    Agora imos falar con máis detalle das deficiencias da UDF:

    • A creación de UDF require o uso de VBA. Non hai forma de evitarlo. Isto significa que o usuario non pode gravar a UDF do mesmo xeito que unha macro de Excel. Tes que crear a UDF ti mesmo. Non obstante, pode copiar epega partes do código macro rexistrado previamente na túa función. Só tes que ter en conta as limitacións das funcións personalizadas.
    • Outro inconveniente de UDF é que, como calquera outra función de Excel, só pode devolver un único valor ou unha matriz de valores nunha cela. Simplemente realiza cálculos, nada máis.
    • Se queres compartir o teu libro de traballo cos teus compañeiros, asegúrate de gardar as túas UDF no mesmo ficheiro. En caso contrario, as túas funcións personalizadas non funcionarán para eles.
    • As funcións personalizadas creadas co editor VBA son máis lentas que as funcións habituais. Isto é especialmente notable en mesas grandes. Desafortunadamente, VBA é unha linguaxe de programación moi lenta ata agora. Polo tanto, se ten moitos datos, intente utilizar funcións estándar sempre que sexa posible ou cree UDF usando a función LAMBDA.

    Limitacións de funcións personalizadas:

    • Os UDF son deseñado para realizar cálculos e devolver un valor. Non se poden usar en lugar de macros.
    • Non poden cambiar o contido doutras celas (só a cela activa).
    • Os nomes das funcións deben seguir determinadas regras. Por exemplo, non pode usar un nome que coincida cun nome de función nativo de Excel ou un enderezo de cela, como AB123.
    • A súa función personalizada non pode conter espazos no nome, pero pode incluír o carácter de subliñado. Non obstante, o método preferido é usar maiúsculas ao comezo de cada novapalabra (por exemplo, GetMaxBetween).
    • Unha UDF non pode copiar e pegar celas noutras áreas da folla de traballo.
    • Non poden cambiar a folla de traballo activa.
    • As UDF poden' t cambie o formato na cela activa. Se queres cambiar o formato dunha cela ao mostrar valores diferentes, debes usar o formato condicional.
    • Non poden abrir libros adicionais.
    • Non se poden usar para executar macros usando Application.OnTime .
    • Non se pode crear unha función definida polo usuario mediante o gravador de macros.
    • As funcións non aparecen no Desenvolvedor > Diálogo Macros .
    • As súas funcións aparecerán no cadro de diálogo ( Inserir > Función ) e na lista de funcións só se se declaran como Públicas (este é o predeterminado, a non ser que se indique o contrario).
    • As funcións declaradas como Privadas non aparecerán na lista de funcións.

    Unha operación bastante lenta. , así como algunhas restricións de uso, poden facerche pensar: "Para que serven estas funcións personalizadas?"

    Poden ser útiles, e facelo se temos en conta as limitacións que se lles impón. Se aprendes a crear e usar correctamente as UDF, podes escribir a túa biblioteca de funcións. Isto ampliará moito a túa capacidade de traballar con datos en Excel.

    En canto a min, as funcións personalizadas aforran moito tempo. E que hai de ti? Xa tentaches crear o teu propio UDF? Gustouchemellor que as funcións básicas de Excel? Comentámolo nos comentarios :)

    Michael Brown é un entusiasta da tecnoloxía dedicada á súa paixón por simplificar procesos complexos mediante ferramentas de software. Con máis dunha década de experiencia na industria tecnolóxica, perfeccionou as súas habilidades en Microsoft Excel e Outlook, así como en Follas de cálculo e Documentos de Google. O blog de Michael está dedicado a compartir o seu coñecemento e experiencia con outros, proporcionando consellos e titoriais fáciles de seguir para mellorar a produtividade e a eficiencia. Tanto se es un profesional experimentado como un principiante, o blog de Michael ofrece valiosas ideas e consellos prácticos para sacar o máximo proveito destas ferramentas de software esenciais.