Cuando se habla de hojas de cálculo, Excel es la principal referencia, aunque no la única. Y aunque posee una cantidad enorme de recursos, son muy pocas las personas que le sacan todo su potencial. Sin embargo, cuando se trata de automatizar procesos, se hace necesario dar un paso más allá de las herramientas básicas y sumergirse en los macros, que abren un mundo de posibilidades, agilizando las tareas y simplificando el trabajo de manera simple.
¿Qué son los macros de Excel?
Los macros son códigos que permiten realizar funciones de forma automática, con la ventaja de que se pueden personalizar, agregando sus propias características. Esto permite que diversas funciones dejen de hacerse de manera manual, automatizando funciones básicas como dar formato a celdas, copiar valores y calcular totales, hasta más complejas, acelerando procesos donde se ingresan datos repetitivos constantemente.
El uso de macros permite, gracias a una configuración personalizada, exportar datos, organizando información para optimizar una base de datos, limpiando filas o columnas vacías, copiando y pegando datos de otras fuentes, crear gráficos que sean fáciles de ver y también de imprimir.
Ventajas de usar macros
Los macros son un recurso muy potente, sobre todo para quienes utilizan Excel con mucha frecuencia. Entre sus principales ventajas, destacamos:
- Una vez creado un macro, se pueden modificar para perfeccionar o ajustar las que ejecutan.
- Permiten reducir la tasa de errores por el hecho de que las acciones a ejecutar están grabadas de antemano
- Aceleran el proceso, ayudando a reducir el tiempo de trabajo.
¿Cómo crear macros?
Habilitar pestaña “Programador”
En el menú principal, ir a la pestaña “Archivo” y hacer clic en “Más”. En el diálogo que se abre, seleccionar la opción “Personalizar cinta de opciones”, activar la casilla “Programador” que se muestra en el cuadro de “Pestañas Principales” y concluir la acción con “Aceptar”.
Grabar macros
- La grabación de un macro comienza seleccionando la pestaña «Programador» del menú principal.
- Luego, se hace clic en «Grabar Macro» y se abre un diálogo donde se debe asignar un nombre al macro y una ruta donde quedará guardado.
- Opcionalmente, el programa permite determinar un comando de acceso abreviado y una descripción.
- A partir de ese momento, Excel irá grabando todas las acciones que hagas en tu hoja de cálculo hasta que detengas la grabación, las cuales se repetirán cuando pulses el atajo o comando creado para esa acción.
Mientras la grabación esté activada, la macro registra cada acción realizada, por lo que los clics en las celdas, los datos, fórmulas y formato introducidos, entre otras acciones, quedarán grabadas.
Al guardar una hoja de cálculo con macros es importante tener en cuenta que, de manera predeterminada, los archivos con la extensión “.xlsx” no pueden incluir macros, por lo que se tiene que seleccionar la opción “.xlsm”.
Usando el editor VBA
Para crear macros en Excel usando el Editor de Visual Basic (VBA), el primer paso es abrir una hoja de cálculo e ingresar el atajo Alt + F11 (si usas Mac, debe reemplazarse por Fn + Shift + F11), lo que abrirá automáticamente la ventana del Editor VBA.
Es importante considerar que los macros están formados por archivos, también denominados «módulos» con un código VBA. Para insertar un módulo, basta hacer clic en «insertar» y luego en «módulo» para que aparezca un espacio en blanco donde se introduce el código deseado.
Sin embargo, ¿cómo codificar un macro para que automatice las acciones que deseamos?
Usemos como ejemplo una base de datos con información de trabajadores de una empresa, el área a la que pertenecen y el salario de cada uno, donde necesitemos mover datos usando las funciones copiar y pegar, que son algunas de las operaciones más comunes y frecuentes en Excel.
Copiar, cortar y pegar son acciones simples y se pueden realizar manualmente. Sin embargo, al hacerlo reiteradas veces, cobra importancia tener un recurso que pueda hacerlo automáticamente, ya que ahorrará mucho tiempo. Con un macro, este trabajo podría hacerse de manera automatizada y para eso presentamos cómo hacerlo:
Copiar celdas con VBA
Si necesitamos copiar los datos de las columnas a, B y C de nuestro ejemplo, usando VBA para trasladarlos a las columnas D, E y F, hay que considerar el código a continuación:
Rango («Insertar rango»). Copiar.
En nuestro ejemplo sería:
Rango («A: C»). Copy ← copia columna A a la C
Rango («A1: C100»). Copy ← copia el rango A1: C100
Además, debes incluir siempre las líneas Sub Nameofmacro () y End sub en la parte superior e inferior del código. En Excel, cuando escribas al principio del código el término «Sub» seguido del nombre del macro, el sub final aparecerá automáticamente en la línea inferior.
Pegar celdas con VBA
Si lo que necesitas es pegar celdas, las sugerencias más frecuentes son las siguientes:
Rango («La celda / área donde se desea pegar»). Pastespecial ← para pegar de forma habitual (fórmulas y formato)
Rango («La celda / área donde se desea pegar»). PastespecialxlPasteValues ← para pegar solamente valores
Cortas celdas usando VBA
Siguiendo la lógica usada para copiar, podemos cambiar la ubicación de los datos usando el recurso de corte. Para hacerlo necesitamos:
Rango («Insertar rango aquí»). Cut
Range («Insertar donde desea pegar»). Select
ActiveSheet.Paste
Agregar bucles a VBA
Además de estas tres funciones básicas, es posible que un trabajador se enfrente a la necesidad de realizar, en pocos segundos, una acción más larga o compleja de forma reiterada.
En esos casos surge la opción de crear un bucle para, por ejemplo, corregir una hoja de cálculo donde los datos estén desordenados y arreglarlo manualmente puede tomar mucho tiempo.
¿Cómo hacerlo? Basta generar el siguiente código:
Sub loops ()
Range (“A1”) .Select
For i = 1 To 500
ActiveCell.Offset (3, 0) .Select
Selection.Delete Shift:=x1ToLeft
Next
End Sub
- La indicación “Range (“A1”) .Select” determina que el bucle comienza en la celda superior izquierda de la hoja.
- La línea “For i = 1 To 1000” sirve para determinar el número de veces que el bucle se puede ejecutar, siendo 1000 un ejemplo para esta simulación, pero se puede adaptar de acuerdo a la cantidad de datos que tenga la hoja de cálculo que se va a trabajar.
- Las líneas “ActiveCell.Offset (3, 0) .Select” y “Selection.Delete Shift:=x1ToLeft” combinan la acción de reconocer una celda activa, diciéndole a Excel que se desplace una cantidad de filas hacia abajo, en este caso cada 3 filas, y la seleccione, convirtiéndola en una nueva celda activa. La línea siguiente del código le dice a Excel qué hacer con esta celda recién seleccionada, en este caso, eliminarla y que las celdas a la derecha de ella se muevan hacia la izquierda.
- Finalmente, “Next” le indica a Excel que no hay más acciones dentro del bucle.
Sentencias “IF”: Un poco de lógica a la hoja de cálculo
Una hoja de cálculo también puede incorporar acciones que impliquen una decisión lógica. Para eso, al igual que la función IF de Excel, podemos introducir la lógica “si-esto-entonces-aquello” a nuestros códigos, las cuales se conocen como sentencias “IF”.
Si usamos como ejemplo una base de datos que haya sido importada con errores, presentando cada 3 filas datos desplazados una o dos columnas a la derecha, podemos agregar una sentencia “IF” para corregir ese problema de forma automática. Para eso, hay que hacer lo siguiente:
- Desarrollamos un bucle siguiendo el ejemplo anterior, incorporando la sentencia “IF” que determinará la acción queremos que realice.
Sub loopsandifstatements ()
Range (“A1”) .Select
For i = 1 To 500
ActiveCell.Offset (3, 0) .Select
If ActiveCell. Offset (0, 1) = “” Then
Selection.Delete Shift:=x1ToLeft
Selection.Delete Shift:=x1ToLeft
Else
Selection.Delete Shift:=x1ToLeft
End If
Next
End Sub
- En la primera parte de la sentencia “IF” se indica que, si la celda a la derecha de la celda activa está en blanco, hay que realizar una acción (If Activecell.Offset (0,1) = “” Then), en este caso desplazarla hacia la izquierda (Selection.Delete Shift: = x1ToLeft). Vemos que el código se repite en nuestro ejemplo porque la instrucción es que se desplace dos celdas hacia la izquierda de su fila.
- Luego, con el comando “Else” asociamos una nueva instrucción (Selection.Delete Shift:=x1ToLeft ) para cuando necesitemos que el desplazamiento sea de apenas una celda.
La sentencia IF siempre debe terminar con End If para indicarle a Excel que termine de ejecutarla.
¡Prueba DataScope ahora haciendo click aquí!
DataScope es una plataforma que permite a las empresas agilizar, organizar y evaluar el trabajo en terreno gracias a sus formularios online, que proporcionan indicadores en tiempo real, 100% adaptables a cualquier área.