Táboa de contidos
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 :)