Cómo combinar celdas en Google Sheets usando macros

En este tutorial vamos a aprender a combinar celdas en Google Sheets usando macros, una funcionalidad que, aunque no es muy popular para algunos, puede ser muy útil para mejorar la presentación visual de informes o tablas. Te mostraré cómo crear macros para combinar celdas seleccionadas, combinar rangos fijos o dinámicos, y también cómo separar todas las combinaciones con un solo botón. Además, veremos cómo automatizar estas acciones con disparadores para que se ejecuten al editar ciertas celdas. Este conocimiento te ayudará a ahorrar tiempo y a tener un control más avanzado sobre el formato de tus hojas de cálculo.

1. Crear una macro para combinar celdas seleccionadas

La forma más sencilla de combinar celdas con una macro es grabar la acción mientras seleccionas un rango y usas la opción de Combinar horizontalmente. Esto genera un código básico que podemos adaptar para combinar cualquier rango seleccionado por el usuario.

function combinarSeleccionadas() {
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rango = hoja.getActiveRange();
  rango.mergeAcross();
}

Esta función toma el rango que el usuario tiene seleccionado y aplica el método mergeAcross(), que combina las celdas horizontalmente fila por fila, igual que el botón «Combinar horizontalmente» en Sheets.

2. Crear un botón para ejecutar la macro

Para facilitar su uso, puedes insertar un dibujo en la hoja y asignarle la macro combinarSeleccionadas. Así con un solo clic podrás combinar las celdas seleccionadas sin usar el menú.

3. Macro para separar (descombinar) celdas seleccionadas

De forma similar, podemos crear una macro para separar celdas combinadas en el rango seleccionado:

function separarSeleccionadas() {
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rango = hoja.getActiveRange();
  rango.breakApart();
}

Esta función usa el método breakApart() para descombinar las celdas dentro del rango seleccionado.

4. Combinar un rango fijo (por ejemplo, un encabezado)

Si en tu informe siempre quieres combinar un rango fijo, como la primera fila desde la columna A hasta la F, puedes hacer una macro para ese rango específico:

function combinarEncabezadoFijo() {
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rango = hoja.getRange(1; 1; 1; 6); // Fila 1, columnas 1 a 6 (A a F)
  rango.mergeAcross();
}

Esto combina horizontalmente las celdas de la primera fila desde la columna A hasta la F, ideal para títulos o encabezados.

5. Combinar encabezado dinámico según la última columna con datos

Para casos más flexibles, donde el número de columnas puede variar, podemos detectar dinámicamente cuál es la última columna con datos y combinar hasta ahí:

function combinarEncabezadoDinamico() {
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var ultimaColumna = hoja.getLastColumn();
  var rango = hoja.getRange(1; 1; 1; ultimaColumna); // Fila 1, desde columna 1 hasta última
  rango.mergeAcross();
}

Así, si agregas o quitas columnas, la macro siempre combinará el encabezado hasta la última columna con contenido.

6. Macro para separar todas las combinaciones de una hoja

Una funcionalidad muy útil es descombinar todas las celdas combinadas en toda una hoja con un solo botón. Para eso, recorremos todas las combinaciones y las separamos:

function separarTodo() {
  var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var rango = hoja.getDataRange();
  rango.breakApart();
}

Esto separa todas las celdas combinadas del rango con datos de la hoja activa.

7. Combinar y separar automáticamente al editar una celda específica

Para automatizar la combinación, podemos usar la función onEdit(e) para que al modificar una celda específica, por ejemplo C9, se combine o se separe según el valor que ingreses.

function onEdit(e) {
  var hoja = e.source.getActiveSheet();
  var celda = e.range;
  var valor = e.value;

  if (celda.getA1Notation() == "C9" && valor == "combinar") {
    // Separar primero para evitar errores
    hoja.getRange(1; 1; 1; hoja.getLastColumn()).breakApart();
    // Combinar encabezado dinámico
    hoja.getRange(1; 1; 1; hoja.getLastColumn()).mergeAcross();
  }
}

Así, cuando escribas «combinar» en la celda C9, la macro separará cualquier combinación previa en la fila 1 y luego combinará desde la columna A hasta la última con datos.

Conclusión

En este tutorial vimos cómo crear macros para combinar celdas seleccionadas, combinar rangos fijos o dinámicos, y también cómo separar combinaciones fácilmente en Google Sheets. Además, aprendimos a automatizar estas acciones con la función onEdit para que se ejecuten cuando cambiamos una celda específica. Estas herramientas te ayudarán a mejorar la presentación de tus informes y a optimizar tu trabajo diario en Sheets.

Te recomiendo practicar creando tus propios botones para ejecutar estas macros y adaptar los rangos a tus necesidades específicas. Si quieres profundizar más en automatizaciones con Google Apps Script, en mi academia JuanSGuzman tengo un curso completo de Google Apps Script donde enseño desde lo básico hasta proyectos avanzados.

Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.