Automatiza Excel: Cómo Borrar Filas Masivamente (Sin Errores de Memoria)
¿Tienes un archivo de Excel con miles de filas y necesitas borrar solo aquellas que dicen "SIN COBERTURA"? En este tutorial te enseño el script exacto en Office Scripts para hacerlo en segundos y sin que Excel colapse.
📺 Mira el Tutorial Paso a Paso
Si prefieres ver cómo implemento y explico este código, aquí tienes el video completo:
El Problema: Limpieza de Datos Masivos
Imagina que tienes datos en la columna AZ y necesitas eliminar toda la fila si el valor es "SIN COBERTURA". Si usas un filtro normal, a veces Excel se pone lento. La mejor solución es usar Office Scripts (TypeScript) en Excel 365.
El Script Optimizado (Copia y Pega)
Ve a la pestaña Automatizar > Nuevo Script en tu Excel y pega lo siguiente:
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const usedRange = sheet.getUsedRange();
if (!usedRange) {
console.log("La hoja está vacía.");
return;
}
// --- CONFIGURACIÓN ---
const targetColumnIndex = 51; // Columna AZ (Índice 51)
const targetText = "SIN COBERTURA";
// Obtenemos dónde empieza la tabla y cuántas filas tiene
const startRow = usedRange.getRowIndex();
const rowCount = usedRange.getRowCount();
// SOLUCIÓN DE MEMORIA: Leemos SOLO la columna AZ
const columnRange = sheet.getRangeByIndexes(startRow, targetColumnIndex, rowCount, 1);
const values = columnRange.getValues();
console.log(`Analizando ${rowCount} filas...`);
// Iterar de ABAJO hacia ARRIBA (Vital para no saltar filas al borrar)
for (let i = values.length - 1; i >= 0; i--) {
// Como ahora 'values' solo tiene 1 columna, el índice siempre es 0
let cellValue = values[i][0];
if (String(cellValue).toUpperCase() === targetText) {
let rowToDelete = startRow + i;
sheet.getRangeByIndexes(rowToDelete, 0, 1, 1)
.getEntireRow()
.delete(ExcelScript.DeleteShiftDirection.up);
console.log(`Fila ${rowToDelete + 1} eliminada.`);
}
}
console.log("Limpieza finalizada con éxito.");
}
💡 Los 2 secretos de este Script
- Iteración Inversa: Recorremos las filas de abajo hacia arriba (
i--). Si borras una fila de arriba hacia abajo, las de abajo suben, los índices cambian y el código se saltaría celdas. - Ahorro de Memoria: Al usar
getRangeByIndexeslimitando la lectura a 1 sola columna, evitamos que Excel se congele tratando de leer cientos de columnas vacías o irrelevantes.
¿Cómo adaptarlo a tu archivo?
- Para cambiar la columna: Modifica la variable targetColumnIndex. Recuerda que la programación cuenta desde cero (A=0, B=1, C=2... AZ=51).
- Para cambiar el texto: Modifica lo que está entre comillas en targetText. El código convierte todo a mayúsculas automáticamente para evitar errores si escribes "Sin Cobertura" o "sin cobertura".
¡Espero que este código te ahorre mucho tiempo de trabajo! Si tienes dudas o te gustaría ver más automatizaciones, déjame un comentario.
0 Comentarios