Michelle pregunta:
Creo que estoy en el camino correcto con una referencia circular. Este es mi problema. Tengo dos celdas
A1=5
yB1=5
. Lo que quiero hacer es que B1 memorice 5, y luego quiero agregar un nuevo valor a A1, digamos que A1 ahora es igual a 10. ¿Puedo tener una fórmula B1 que memorice 5, pero también agregue 10? ¿Entonces ahoraB1=15
?
Por lo general, las referencias circulares son algo malo, pero a veces pueden usarse en nuestro beneficio. Esta es la forma no macro de hacer lo que quiere hacer. Solo funcionará en determinadas situaciones.
- En el menú de Excel, seleccione Herramientas> Opciones.
- Vaya a la pestaña Cálculo. Marque la casilla de iteraciones. Cambie el número máximo de iteraciones a 1.
- Haga clic en Aceptar para cerrar el cuadro de diálogo de opciones.
- Ingrese 5 en la celda A1.
- Ingrese 0 en la celda B1
- Ingrese
=A1+B1
en la celda B1 - Ahora, cuando ingrese nuevos valores en A1, la entrada en B1 recordará el total anterior y agregará el valor de A1.
Aquí está la ENORME limitación. ¡No puede ingresar ningún valor en otra parte de la hoja! Cada vez que ingrese un valor o se recalcule la hoja, el valor en A1 se agregará al valor en B1. Por lo tanto, al presionar F9 varias veces, verá que B1 aumenta en 5 por cada F9.
La forma más segura de hacerlo es con una pequeña macro de controlador de eventos. Deberá agregar este código al panel de código de Sheet1 (asumiendo que está trabajando en Sheet1). El código del controlador de eventos sería el siguiente:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = “$A$1” Then Application.EnableEvents = False Range(“B1”).Value = Range(“B1”).Value + Target.Value Application.EnableEvents = True End If End Sub
Este fragmento de código se ejecuta cada vez que se cambia una celda en la hoja. Target es una variable de objeto especial que indica qué celda se cambió. El controlador de eventos comprueba qué celda se acaba de cambiar. Si la celda era A1, agregará el valor en A1 a B1. Tenemos que desactivar los controladores de eventos mientras cambiamos B1 para que el controlador de eventos no se vuelva a llamar a sí mismo.