Ajusta el texto de una celda con guiones mediante una macro de ONLYOFFICE
Formatear los valores de las celdas a mano, uno por uno, puede ser tedioso, especialmente cuando necesitas aplicar el mismo patrón a docenas o cientos de celdas. En esta entrada del blog, te mostraremos una sencilla macro del Editor de hojas de cálculo de ONLYOFFICE que ajusta automáticamente cada carácter en las celdas seleccionadas con guiones.

Por qué usar esta macro
Ajustar caracteres con un separador como este puede ser útil para generar etiquetas decorativas, crear valores de marcador de posición visualmente distintos o preparar datos para su importación en sistemas que esperan cadenas con delimitadores. Hacer esto manualmente para un gran rango de celdas es lento y propenso a errores; una macro lo maneja al instante, y es lo suficientemente inteligente como para omitir celdas vacías y celdas que ya están ajustadas, así que puedes ejecutarla de nuevo sin duplicar los guiones.
Creando la macro
Aquí tienes un vistazo más cercano a cada parte del script y el papel que desempeña.
Obteniendo la selección actual
La macro comienza capturando el rango de celdas especificado que el usuario tiene actualmente seleccionado:
let selection = Api.GetSelection();
selection.ForEach(function (cell) {
// ... processing happens here for each cell
});
Api.GetSelection() devuelve el rango de celdas actualmente seleccionadas en la hoja, y ForEach() itera a través de cada celda individual en ese rango, ejecutando la función de retorno de llamada una vez por llamada.
Omitiendo celdas vacías
Antes de hacer cualquier procesamiento, la macro verifica si la celda realmente tiene valor:
let cellValue = cell.GetValue();
if (cellValue === null || cellValue === undefined || cellValue === "") {
return;
}
GetValue() lee el contenido actual de la celda. Si la celda está vacía (null, undefined o una cadena vacía), la función simplemente retorna temprano y pasa a la siguiente celda, dejando las celdas en blanco sin tocar.
Omitiendo celdas que ya están ajustadas
Dado que queremos que la macro sea segura de ejecutar más de una vez, también verifica si una celda ya ha sido procesada:
cellValue = String(cellValue);
if (/^---(?:.---)+$/.test(cellValue)) {
return;
}
El valor se convierte primero a una cadena con el método String() para que pueda ser probado e iterado de manera segura carácter por carácter. La expresión regular /^—(?:.—)+$/ coincide con cadenas que ya siguen el patrón; si coincide, la macro omite la celda en lugar de ajustarla una vez más.
Ajustando cada carácter con guiones
Este es el núcleo de la macro, construyendo la nueva cadena carácter por carácter:
let sTemp = "---";
for (let c = 0; c < cellValue.length; c++) {
sTemp += cellValue.charAt(c) + "---";
}
Cada iteración del bucle agrega el siguiente carácter del valor original, seguido de “- – -“, reconstruyendo gradualmente la cadena con guiones insertados entre cada carácter.
Escribiendo el resultado de vuelta en la celda
Finalmente, la nueva cadena construida se guarda nuevamente en la celda:
cell.SetValue(sTemp);
Código completo de la macro
(function () {
// Obtener las celdas seleccionadas actualmente en la hoja de cálculo
let selection = Api.GetSelection();
// Iterar a través de cada celda seleccionada
selection.ForEach(function (cell) {
// Obtener el valor actual de la celda
let cellValue = cell.GetValue();
// Omitir celdas vacías, nulas o indefinidas — nada que procesar
if (cellValue === null || cellValue === undefined || cellValue === "") {
return;
}
// Asegurarse de que el valor se trate como una cadena (en caso de que sea un número, etc.)
cellValue = String(cellValue);
// Omitir celdas que ya coinciden con el patrón
if (/^---(?:.---)+$/.test(cellValue)) {
return;
}
// Comenzar a construir el nuevo valor con un "---" inicial
let sTemp = "---";
// Envolver cada carácter del valor original con separadores "---"
for (let c = 0; c < cellValue.length; c++) {
sTemp += cellValue.charAt(c) + "---";
}
// Escribir el valor transformado de vuelta en la celda
cell.SetValue(sTemp);
});
})();
Ahora, ¡ejecutemos la macro y veamos cómo funciona!

Cómo usar la macro
- Abre una hoja de cálculo en el Editor de hojas de cálculo de ONLYOFFICE.
- Selecciona el rango de celdas que deseas formatear.
- Ve a Vista → Macros, crea una nueva macro y pega el código anterior.
- Haz clic en Ejecutar.
Cada celda no vacía en tu selección será ajustada instantáneamente en guiones, las celdas vacías y las celdas ya ajustadas quedan sin tocar.
Esta macro es un ejemplo práctico de cómo unas pocas líneas de código pueden hacerse cargo de una tarea de formateo repetitiva que de otro modo significaría editar celdas una por una, y es igual de fácil adaptarlo para otros separadores o patrones más allá de guiones.
Si tienes una idea para una macro que te gustaría usar, dirígete a la categoría de macros en el foro de la Comunidad de ONLYOFFICE y comparte tu sugerencia; es el mejor lugar para solicitar nuevos ejemplos de macros o discutir ideas con el equipo de ONLYOFFICE y otros desarrolladores.
Crea tu cuenta gratuita de ONLYOFFICE
Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.


