Cuando trabajamos con grandes volúmenes de datos en Microsoft Excel, a menudo necesitamos realizar ajustes masivos en las cifras: incrementar precios por inflación, aplicar bonificaciones de puntos a una lista o corregir desvíos en un presupuesto.
Hacer esto celda por celda o crear columnas auxiliares con fórmulas para luego hacer un «copiado y pegado de valores» puede quitarnos mucho tiempo. Afortunadamente, existe una solución mucho más elegante y automatizada: crear una macro en VBA que sume o reste una cantidad fija directamente sobre el rango de celdas que selecciones.
En esta guía te mostramos el código paso a paso, cómo instalarlo en tu libro de Excel y cómo ejecutarlo en segundos.
¿Cómo funciona esta Macro?
El flujo de trabajo es sumamente sencillo e intuitivo:
- Seleccionas con el ratón las celdas numéricas que deseas modificar (pueden ser celdas continuas o salteadas).
- Ejecutas la macro.
- Se abrirá una ventana emergente (InputBox) solicitándote la cantidad a operar.
- Si escribes un número positivo (ejemplo:
200), sumará ese importe a cada celda. - Si escribes un número negativo (ejemplo:
-50), restará esa cantidad.
- Si escribes un número positivo (ejemplo:
- La macro recorre automáticamente tu selección y actualiza los valores al instante, respetando aquellas celdas que contengan texto para no romper la tabla.
Paso 1: Código VBA de la Macro (Optimizado)
A continuación te presentamos el código listo para copiar y pegar. Incluye controles de seguridad para que, en caso de presionar «Cancelar» o escribir texto por error en la ventana emergente, el programa no devuelva un error de código.
VBA
Sub SumarRestarImportes()
' ====================================================================
' Macro para sumar o restar un importe a las celdas seleccionadas
' ====================================================================
Dim rng As Range
Dim valorEntrada As String
Dim numeroOperar As Double
' Solicitamos al usuario el número a sumar o restar mediante un InputBox
valorEntrada = InputBox("Introduce el número que deseas SUMAR (ej: 200) o RESTAR (ej: -50):", "Valor a operar")
' Verificamos si el usuario presionó Cancelar o dejó el cuadro vacío
If valorEntrada = "" Then Exit Sub
' Validamos que el valor introducido sea un número real
If IsNumeric(valorEntrada) Then
numeroOperar = CDbl(valorEntrada)
' Desactivamos el refresco de pantalla para mayor velocidad de ejecución
Application.ScreenUpdating = False
' Recorremos cada celda dentro de la selección realizada
For Each rng In Selection
' Verificamos que la celda contenga un valor numérico y no esté vacía
If WorksheetFunction.IsNumber(rng) And Not IsEmpty(rng) Then
rng.Value = rng.Value + numeroOperar
End If
Next rng
Application.ScreenUpdating = True
MsgBox "¡Proceso completado con éxito!", vbInformation, "Operación Finalizada"
Else
MsgBox "Por favor, introduce un número válido.", vbExclamation, "Error de entrada"
End If
End Sub

Paso 2: Cómo instalar la Macro en Excel
Si es la primera vez que trabajas con código VBA, sigue estos sencillos pasos para guardar la macro en tu archivo:
- Abre tu libro de trabajo en Excel.
- Presiona la combinación de teclas
Alt + F11para abrir el editor de Visual Basic for Applications (VBE). - En el menú superior del editor, dirígete a Insertar > Módulo.
- En la ventana en blanco que aparecerá a la derecha, pega el código que te facilitamos en el paso anterior.
- Cierra la ventana del editor de VBA (puedes pulsar la
Xarriba a la derecha).
⚠️ Muy importante: Para no perder la macro al cerrar el documento, debes guardar el archivo con la extensión adecuada. Ve a Archivo > Guardar como y en el desplegable de Tipo, elige Libro de Excel habilitado para macros (*.xlsm).

Paso 3: Cómo ejecutar la Macro paso a paso
Una vez instalada, utilizarla en tu día a día requiere apenas tres clics:
- Selecciona las celdas: Con el ratón, sombreadas las celdas numéricas a las que quieras aplicar el incremento o decremento.
- Tip pro: Puedes seleccionar celdas salteadas o discontinuas manteniendo presionada la tecla
Ctrlmientras haces clic en ellas.
- Tip pro: Puedes seleccionar celdas salteadas o discontinuas manteniendo presionada la tecla
- Abre el menú de Macros: Presiona el atajo de teclado
Alt + F8(o ve a la pestaña Programador / Desarrollador y haz clic en Macros). - Ejecuta: Haz doble clic sobre
SumarRestarImportes(o selecciónala y pulsa el botón Ejecutar). - Introduce el valor: En la casilla emergente escribe el número deseado (por ejemplo,
200para sumar o-200para restar) y pulsa Aceptar.
De inmediato verás cómo todos los valores de tu selección se recalculan automáticamente sin alterar los nombres, textos ni la estructura de tu tabla.



Alternativa rápida sin usar Macros: El Pegado Especial
Si te encuentras en un ordenador donde las macros están bloqueadas por políticas de seguridad corporativas, puedes lograr este mismo efecto utilizando la función nativa de Pegado Especial:
- Escribe el número que quieres sumar o restar en una celda vacía cualquiera y cópialo (
Ctrl + C). - Selecciona el rango de celdas objetivo.
- Haz clic derecho sobre la selección y elige Pegado especial > Pegado especial…
- En la sección Operación, marca la casilla Sumar (o Restar).
- Pulsa Aceptar y borra la celda auxiliar inicial.
Codigo Para hacer UNa lista desplegable VBA, jalando desde una hoja con celda y columnas
Hola! Tu ejemplo me.sirvió muchísimo… Pero sería posible que sea sensible y en Lugar de pedir el numero lo compare con otro y lo detecte solito?
Hola estoy haciendo un inventario pero cuando sino entrada y salida me da el producto existente cuando pongo un valor de salida no me resta la existencia. Me puede ayudar
Si no he ententido mal tu pregunta lo mejor es hacerlo con una fórmula condicional. En esta indicas que si corresponde a una entrada sume el valor. En cambio si se indica que es una salida debe de restar. Utiliza la función SI para ello. Un saludo
yo sólo quiero sumarle 1 a una celda. me puedes ayudar?
y puedes hacer una macro que realiza una suma o resta dependiendo de un codigo, por ejemplo todos los numeros con codigo 51 se suman y todos los numeros con codigo 72 se restan. y el resultado dejarlo en cuadro.
ojo. no busco que me sume encima de los valores es aparte el resultado, tampoco busco que exporte un archivo.