Función para acumular o solucion similar

05/03/2007 - 10:59 por pasarin | Informe spam
Hola,

necesito acumular unas cantidades en una celda pero se me crea una
referencia circular. Es decir hoy tengo por ejemplo las celdas A1+A2£, y
quiero que mañana si abro de nuevo la hoja y el valor de A3 me aparece en A1
y al poner un nuevo valor en A2 obtengo un nuevo valor de A3 y así
sucesivamente, es decir A1 quiero que sea un acumulador. El problema es que
me surge una referencia circular. ¿Hay alguna funcion de Excel para esta
necesidad o solución similar?

Muchas gracias y saludos.

Preguntas similare

Leer las respuestas

#1 AnSanVal
05/03/2007 - 12:40 | Informe spam
Creo que te puede valer esta rutina (en el módulo de la hoja), que acumula
en A1, sin necesidad de otras celdas:

Private Sub Worksheet_Change(ByVal Target As Range)
Static Anterior As Double
If Target.Address = "$A$1" Then
Application.EnableEvents = False
Target = Target + Anterior
Anterior = Target
Application.EnableEvents = True
End If
End Sub

Saludos desde Tenerife.
********************************
"pasarin" escribió en el mensaje
news:
Hola,

necesito acumular unas cantidades en una celda pero se me crea una
referencia circular. Es decir hoy tengo por ejemplo las celdas A1+A2£, y
quiero que mañana si abro de nuevo la hoja y el valor de A3 me aparece en
A1 y al poner un nuevo valor en A2 obtengo un nuevo valor de A3 y así
sucesivamente, es decir A1 quiero que sea un acumulador. El problema es
que me surge una referencia circular. ¿Hay alguna funcion de Excel para
esta necesidad o solución similar?

Muchas gracias y saludos.

Respuesta Responder a este mensaje
#2 pasarin
05/03/2007 - 12:56 | Informe spam
Muchas Gracias , va genial.
"AnSanVal" escribió en el mensaje
news:
Creo que te puede valer esta rutina (en el módulo de la hoja), que acumula
en A1, sin necesidad de otras celdas:

Private Sub Worksheet_Change(ByVal Target As Range)
Static Anterior As Double
If Target.Address = "$A$1" Then
Application.EnableEvents = False
Target = Target + Anterior
Anterior = Target
Application.EnableEvents = True
End If
End Sub

Saludos desde Tenerife.
********************************
"pasarin" escribió en el mensaje
news:
Hola,

necesito acumular unas cantidades en una celda pero se me crea una
referencia circular. Es decir hoy tengo por ejemplo las celdas A1+A2£,
y quiero que mañana si abro de nuevo la hoja y el valor de A3 me aparece
en A1 y al poner un nuevo valor en A2 obtengo un nuevo valor de A3 y así
sucesivamente, es decir A1 quiero que sea un acumulador. El problema es
que me surge una referencia circular. ¿Hay alguna funcion de Excel para
esta necesidad o solución similar?

Muchas gracias y saludos.





Respuesta Responder a este mensaje
#3 Héctor Miguel
06/03/2007 - 06:51 | Informe spam
hola, ???

necesito acumular unas cantidades en una celda pero se me crea una referencia circular.
Es decir hoy tengo por ejemplo las celdas A1+A2£, y quiero que ma#ana si abro de nuevo la hoja
y el valor de A3 me aparece en A1 y al poner un nuevo valor en A2 obtengo un nuevo valor de A3 y asi sucesivamente
es decir A1 quiero que sea un acumulador. El problema es que me surge una referencia circular.
Hay alguna funcion de Excel para esta necesidad o solucion similar?



para 'estos casos'... a mi me gusta ofrecer una -probable- 'alternativa diferente'... sigue los pasos al final del presente :D

si cualquier duda... comentas ?
saludos,
hector.
:
1.- 'click-derecho' en la pestaña de [alg]una hoja en el libro y selecciona -> 'insertar...'
2.- de la pesta#a general [en el dialogo siguiente]... elegir...
o... 'macro de microsoft excel 4' [EN TU IDIOMA]
u... 'hoja internacional de macros' ['igual'... pero... 'diferente'... es decir... =>en ingles<=] :))
3.- [en la recien-creada hoja de macros] escribe las siguientes instrucciones para =>cada celda<=...
[A1] AcumulaCambios
[B1] =Argumento("Rango",8)
[B2] =Volatil(Falso)
[B3] =Volver(Llamador()+Rango)
=> o... si 'piensas' en acumular la suma de varias celdas... [B3] =Volver(Llamador()+Suma(Rango))
escribelas 'tal-como-puse', si son 'reconocidas' por la aplicacion, seran 'convertidas' a mayusculas
[solo las instrucciones, que 'inician' con el signo '=' y exceptuando los argumentos 'definidos', p.e "Rango"]
3a- si tu idioma es ingles [o la hoja de macros 'fue' del tipo 'internacional']... las instrucciones en ingles...
[B1] =Argument("Rango",8)
[B2] =Volatile(False)
[B3] =Return(Caller()+Rango)
=> o... si 'piensas' en acumular la suma de varias celdas... [B3] =Return(Caller()+Sum(Rango))
4.- selecciona [en la hoja de macros] la celda 'B1' y...
[menu] insertar / nombre / definir... [en este paso, 'tomara' el nombre que 'pusiste' en 'A1', o el que 'le digas']
[en la seccion 'macro] selecciona el 'tipo' de macro... =>funcion< [opcionalmente]... puedes 'decidir' en cual 'categoria' de funciones sera 'agregada' [por omision... def. por el usuario]
=>ACEPTAR<5.- 'regresa' a la hoja, y en [alg]una celda [p.e. en 'B1'] 'llama' a la funcion [p.e.]
=AcumulaCambios(A1)
=AcumulaCambios(A1:A10)
=AcumulaCambios(Hoja5!A1)
'repite' la llamada a la funcion en tantas celdas como sea necesario ;)

notas:
- en ambas 'formas' puedes hacer uso del 'des-hacer' [undo... ctrl+z] 'pero'...
'el regreso' [que ES UN CAMBIO] ->tambien 'se acumula'<- [en el resultado del procedimiento/funcion] <= OJO
- la instruccion 'Volatil(Falso)' =>evita<= que la funcion se 'auto-actualice' en cada 're-calculo' del modelo
solo se 'actualiza' =>SI CAMBIAN<= [o se modifican] los valores del 'Rango' en el argumento de la funcion.
- por lo anterior... si el cambio 'deja' =>el mismo<= valor que 'antes'... NO se 'actualiza' [NO 'hubo cambios']
'a menos que'... 'el cambio' ocurra =>por codigo<= [no importa que 'quede el mismo'] ;)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida