Realiza lo siguiente:
1. En los eventos de la hoja1 pon la siguiente macro:
Private Sub Worksheet_Change(ByVal Target As Range)
'Por Dante Amor
'24 ene 2018
'Acumular por día, mes y año
'
If Not Intersect(Target, Range("C5")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
If Target.Value = 0 Then Exit Sub
If Target.Value = "" Or Not IsNumeric(Target.Value) Then Exit Sub
'
Set h2 = Sheets("Hoja2")
Set fec2 = h2.Range("B5") 'fecha de captura
'
If fec2.Value = "" Or Not IsDate(fec2.Value) Then
fec2.Value = Date
End If
'
año1 = Year(Range("C3").Value)
año2 = Year(fec2.Value)
mes1 = Month(Range("C3").Value)
mes2 = Month(fec2.Value)
dia1 = Day(Range("C3").Value)
dia2 = Day(fec2.Value)
If año1 <> año2 Then
h2.Range("C5").Value = Target.Value 'dia
h2.Range("D5").Value = Target.Value 'mes
h2.Range("E5").Value = Target.Value 'año
Else
If mes1 <> mes2 Then
h2.Range("C5").Value = Target.Value 'dia
h2.Range("D5").Value = Target.Value 'mes
h2.Range("E5").Value = h2.Range("E5").Value + Target.Value 'año
Else
If dia1 <> dia2 Then
h2.Range("C5").Value = Target.Value 'dia
h2.Range("D5").Value = h2.Range("D5").Value + Target.Value 'mes
h2.Range("E5").Value = h2.Range("E5").Value + Target.Value 'año
Else
h2.Range("C5").Value = h2.Range("C5").Value + Target.Value 'dia
h2.Range("D5").Value = h2.Range("D5").Value + Target.Value 'mes
h2.Range("E5").Value = h2.Range("E5").Value + Target.Value 'año
End If
End If
End If
fec2.Value = Range("C3")
End If
End Sub
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- En el panel del lado derecho copia la macro
2. En la "Hoja2" en la celda B5 tenemos que poner la fecha de captura. De esa forma sabremos cuál fue la fecha anterior, si el mes de la fecha anterior es diferente al mes de la fecha actual, entonces sabremos que el mes cambió y hay que reiniciar el mes. Lo mismo pasa con el día y con el año.
Entonces, en la macro en esta línea obtenemos la fecha anterior:
Set fec2 = h2.Range("B5") 'fecha de captura
La macro en automático pondrá la fecha en la hoja2 en la celda B5, si quieres la fecha en otra celda, solamente cambia en la macro B5 por la celda que desees.
Listo, captura en la hoja1, en la celda C5 un número y la macro en automático realizará los acumuladores en la hoja 2.
.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias
.
Avísame cualquier duda
.