Aunque Excel cuenta con un impresionante catálogo de funciones agrupadas en distintas categorías, el usuario también puede crear funciones propias, personalizadas y adaptadas a sus necesidades.
Cada vez que empleas una función en Excel, obtendrás un determinado resultado, que puede ser un texto, un número entero, con decimales… y, en la mayoría de los casos, será necesario pasar a Excel una serie de argumentos para obtener un determinado dato.
Pues bien, si vamos a crear nuestras funciones, en primer lugar será necesario conocer qué tipos de datos/variables se admiten:
Tipo | Rango |
Byte | 0 a 255 |
Integer (entero) | -32 768 a 32 767 |
Long (entero largo) | -2 147 483 648 a 2 147 483 647 |
Single (simple de coma flotante) | -3,402823E38 a 1,401298E-45 (negativos)1,401298E-45 a 3,402823E38 (positivos) |
Double (doble de coma flotante) | -1,79769313486231E308 a 4,94065645841247E-324 (negativos)4,94065645841247E-324 a 1,79769313486231E308 (positivos) |
Currency (moneda) | -922 337 203 685 477,5808 a 922 337 203 685 477,5807 |
Decimal | +/- 79 228 162 514 264 337 593 543 950 335 sin separador decimal;+/- 7,9228162514264337593543950335 con 28 cifras a la derecha del separador decimal |
Boolean | Verdadero (-1) o Falso (0) |
Date | Se utiliza para almacenar fechas y horas. La parte entera es el día y la decimal la hora. Para asignar fechas se usa # |
String | Para cadenas de caracteres puede ser de longitud variable o de longitud fija |
Variant | Puede contener todo tipo de datos, además de los valores especiales Empty, Error y Null |
Object | Se emplea para crear variables que contengan objetos |
Las funciones personalizadas se crean en el entorno de Visual Basic para Aplicaciones (VBA) bajo la forma de procedimientos Function. En consecuencia, lo primero será acceder a dicho entorno, ya sea pulsando el icono Visual Basic de la cinta Programador o mediante la combinación de teclas Alt+F11.
El código necesario para crear la función debe escribirse en un módulo, así que entramos en el menú Insertar y hacemos clic sobre Módulo, para que Excel inserte y active el objeto correspondiente.
Si lo has hecho correctamente, tu pantalla debe asimilarse a la imagen, en particular, a la parte superior izquierda, y será en la parte de la derecha dónde escribamos el código para crear nuestra función.
A la hora de programar en el entorno VBA es necesario conocer algunos términos o palabras clave que utilizaremos para crear el código.
Function...End Function
Indica el principio y el final del código para crear la función
As [tipo de dato/variable]
Seguida de uno de los tipos expuestos en la tabla superior se utiliza para indicar tanto especificar el tipo de argumento que pasaremos a la función como para definir el tipo de resultado que devolverá la función
Si trabajas con Excel sabrás que existe la función SUMA pero que no hay ninguna disponible para restar, así que expondremos un ejemplo sencillo: vamos a crear la función RESTA que restará DOS NÚMEROS ENTEROS.
Nos ponemos manos a la obra y en la zona derecha de la pantalla escribimos el siguiente código:
Function resta(numero1 As Integer, numero2 As Integer) As Integer resta = numero1 - numero2 End Function
Recomendamos escribir todo el código en minúsculas, ya que si Excel reconoce a priori como bueno nuestro código, al ir cambiando de línea, irá poniendo en azul y en mayúsculas los términos clave.
En la primera línea se pueden observar varios datos interesantes; por un lado RESTA(…) AS INTEGER es decir, que el resultado de la función será un número entero; por otro (NUMERO1 AS INTEGER,NUMERO2 AS INTEGER), indicando que los dos números que vamos a restar deben ser enteros.
A continuación, la expresión RESTA = NUMERO1 – NUMERO2 es el cálculo que se aplicará de manera interna al llamar a la función desde la hoja de cálculo.
Cómo ves, el código es muy sencillo aunque, lógicamente, se puede mejorar para incluir por ejemplo controles de error por si pasáramos como datos textos, fechas o números con decimales; aunque será algo que veremos en artículos futuros.
Para emplearla, ve a la hoja de cálculo, introduce dos números en celdas diferentes, por ejemplo A1 y A2 y en A3 escribe =RESTA(A1;A2). El resultado debe ser 19 y si lo haces al revés =RESTA(A2;A1) también funcionará.
Si no eres de escribir función porque te gusta más el asistente, entonces entra en la categoría Definida por el usuario y opera de la manera habitual.
Aunque no sepas programar en Visual Basic para Aplicaciones, con unos conocimientos básicos y las ideas claras podrás crear tus propias funciones para Excel.
Acerca del autor