Mantener datos en 2 celdas y que vayan acumulando el valor añadido diariamente

No se si se podrá hacer, igual es algo muy fácil o igual es imposible, yo por más vueltas que le di no doy con la tecla.

El ejemplo lo he simplificado y espero estar bien explicado. Cada día se añadiría la fecha en la celda "C1" y se añadiría un valor en la "C3". Ese valor es de un día, y se le sumaria lo anterior para tener el valor de la "D3" (valor mensual) y de igual forma el de "E3" (valor anual). Hasta aquí no tendría ningún problema en conseguir esos valores, el problema surge cuando llego al día siguiente:

Yo añado "3" en el valor diario y eso debería de sumarse a los 10 del día anterior para el total del mes y del año.

¿Se puede mantener la celdas "D3" y "E3" fijas y que solo acumulen el valor cada día?

2 respuestas

Respuesta
1

Usa el evento "Change" de la hoja en cuestión. Algo así:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = [C3] Then
[D3] = [D3] + [C3]
End If
End Sub

Hola, muchas gracias por la contestación.

No se porque, pongo el evento en la hoja en donde tengo los datos y lo malo es que empezando desde 0, el primer día pongo 1 en la celda del "Dia" y la celda del "Mes" me contabiliza un 2 y no 1. A partir de ahí es perfecto, añado hace lo que yo quería que hiciera.

Esta misma operación ¿se puede aplicar a más celdas de la misma hoja?

Gracias un saludo

Para evitar que cuando D3 está en cero o en blanco, y en C3 colocas un primer dígito, éste se sume dos veces, debes tener un "If" previo que coloque directamente el valor en D3 y no que autosume. Para que el evento se use en varias celdas, una alternativa es usar un Else - Case, algo así:

Select Case Target.Address
Case "$B$2"
' aquí lo que requieras
Case "$B$3"
' aquí también
etc...
End Select

Abraham Valencia

Respuesta
1

[Hola 

Te paso la macro 

Private Sub Worksheet_Change(ByVal Target As Range)
'Por Adriel Ortiz
'
    If Not Intersect(Target, Range("C3")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Cells(Target.Row, "D") = Cells(Target.Row, "D") + Cells(Target.Row, "C")
        Cells(Target.Row, "E") = Cells(Target.Row, "E") + Cells(Target.Row, "C")
    End If
End Sub

Valora la respuesta bueno o excelente para finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas