Lección 9: Combinar celdas automáticamente con macros.

En esta lección, vas a aprender a combinar y descombinar celdas de manera automática utilizando macros.

En primer lugar, para combinar un rango de celdas, usaremos la propiedad Merge:

Range("D2:E4").Merge

También, es posible usar la siguiente sintaxis:

Range(Cells(2, "D"), Cells(4, "E")).Merge

Si, por el contrario, lo que queremos es descombinar celdas, usaremos la propiedad UnMerge:

Range("D2:E4").UnMerge

Igualmente es posible usar esta otra sintaxis:

Range(Cells(2, "D"), Cells(4, "E")).UnMerge

A continuación, vamos a poner todo esto en práctica y a combinar/descombinar celdas usando macros.

Primero, crea un libro nuevo, abre el editor VBA, inserta 3 módulos y copia las siguientes macros en ellos:

 

Macro 1. Combinar las celdas seleccionadas.

Sub Leccion9_1()

'Macro que combina las celdas seleccionadas en el recuadro (Método 1)

'Declaramos las cuatro variables como enteros porque van a ser números

Dim Filainicio As Integer

Dim Filafinal As Integer

Dim Columnainicio As Integer

Dim Columnafinal As Integer

'Guardamos el valor de la celda C4 en la variable Filainicio

Filainicio = Range("C4").Value

'Guardamos el valor de la celda D4 en la variable Filafinal

Filafinal = Range("D4").Value

'Guardamos el valor de la celda C5 en la variable Columnainicio

Columnainicio = Cells(5, "C").Value

'Guardamos el valor de la celda D5 en la variable Columnafinal

Columnafinal = Cells(5, 4).Value

'Combinamos las celdas del rango

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Merge

'Escribimos el texto "Combinadas"

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Value = "Combinadas"

'Alineamos horizontalmente el texto

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).HorizontalAlignment = xlCenter

'Alineamos verticalmente el texto

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).VerticalAlignment = xlCenter

End Sub

Macro 2. Descombinar las celdas seleccionadas.

Sub Leccion9_2()

'Macro que descombina las celdas seleccionadas en el recuadro

'Declaramos las cuatro variables como enteros porque van a ser números

Dim Filainicio As Integer

Dim Filafinal As Integer

Dim Columnainicio As Integer

Dim Columnafinal As Integer

'Guardamos el valor de la celda C4 en la variable Filainicio

Filainicio = Range("C4").Value

'Guardamos el valor de la celda D4 en la variable Filafinal

Filafinal = Range("D4").Value

'Guardamos el valor de la celda C5 en la variable Columnainicio

Columnainicio = Cells(5, "C").Value

'Guardamos el valor de la celda D5 en la variable Columnafinal

Columnafinal = Cells(5, 4).Value

'Borramos el texto "Combinadas"

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).ClearContents

'Descombinamos las celdas del rango

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).UnMerge

End Sub

Macro 3. Combinar las celdas seleccionadas (otro método).

Sub Leccion9_3()

'Macro que combina las celdas seleccionadas en el recuadro (Método 2)

'Declaramos las cuatro variables como enteros porque van a ser números

Dim Filainicio As Integer

Dim Filafinal As Integer

Dim Columnainicio As Integer

Dim Columnafinal As Integer

'Guardamos el valor de la celda C4 en la variable Filainicio

Filainicio = Range("C4").Value

'Guardamos el valor de la celda D4 en la variable Filafinal

Filafinal = Range("D4").Value

'Guardamos el valor de la celda C5 en la variable Columnainicio

Columnainicio = Cells(5, "C").Value

'Guardamos el valor de la celda D5 en la variable Columnafinal

Columnafinal = Cells(5, 4).Value

'Seleccionamos las celdas del rango

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Select

'Combinamos las celdas del rango

Selection.Merge

'Escribimos el texto "Combinadas"

Selection.Value = "Combinadas"

'Alineamos horizontalmente el texto

Selection.HorizontalAlignment = xlCenter

'Alineamos verticalmente el texto

Selection.VerticalAlignment = xlCenter

End Sub

Seguidamente, rellena la hoja con los valores que se muestran a continuación y crea tres botones asociados a las macros que acabamos de copiar. A continuación, Te dejo el enlace al tema donde explico cómo asociar macros a botones, por si te interesa.

Finalmente, debería quedarte algo así:

total-operaciones-matematicas-macros

Como resultado, si ejecutas la primera macro, verás que se combinan las celdas seleccionadas en la cuadrícula. Puedes escribir los valores que quieras en ella, pero evita las 10 primeras filas y las 6 primeras columnas para no desconfigurar la tabla.

Además, en esta macro he utilizado tres formas distintas para asignar valores a las variables. En realidad, puedes usar la que más te guste:

Filafinal = Range("D4").Value 'Primera forma
Columnainicio = Cells(5, "C").Value 'Segunda forma
Columnafinal = Cells(5, 4).Value 'Tercera forma

La segunda macro va a borrar el contenido de las celdas combinadas “Combinadas” y a descombinarlas volviendo, por lo tanto, a la situación original.

total-operaciones-matematicas-macros

Por último, la tercera de las macros realiza la misma función que la primera, pero el código varía ligeramente. En realidad, lo que hemos hecho es seleccionar el rango de celdas con el comando:

'Seleccionamos las celdas del rango

Range(Cells(Filainicio, Columnainicio), Cells(Filafinal, Columnafinal)).Select

Para, posteriormente, realizar las operaciones de combinación, asignación de valor y alineación del texto haciendo referencia a esa selección sin tener que escribir todo el chorizo de Range en cada comando.

'Combinamos las celdas del rango

Selection.Merge

'Escribimos el texto "Combinadas"

Selection.Value = "Combinadas"

'Alineamos horizontalmente el texto

Selection.HorizontalAlignment = xlCenter

'Alineamos verticalmente el texto

Selection.VerticalAlignment = xlCenter

Es lo mismo, pero ahorramos tiempo.

Con todo esto, llegamos al final de la novena lección, en la que has aprendido a combinar celdas automáticamente usando macros.

Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.

Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L8. Agregar/eliminar filas y columnas con macros.

L10. Filtrar y ordenar datos con macros. »

Categorías