Suma en diferentes hojas, por meses en excel

De nuevo Dante, esto es un mas difícil todavía y espero que puedas ayudarme, mas que poder espero que sea posible porque de serlo, seguro que sabes como hacerlo.

Paso a explicarte un poco.

En la hoja1 tengo, en una celda la fecha del día actual, en otra celda el mes, y otra celda donde cada dia introduzco un dato (adjunto imagen)

Cada día insertare datos en esta celda que necesito se vayan sumando en la "Hoja2", según la siguiente imagen. Lo añadido diariamente ha de sumarse a un computo mensual y otro anual.

Bien, lo tenia casi hecho pero me bloquee al llegar al siguiente mes, necesito que cuando en la "hoja1" el mes sea "Febrero" por ejemplo, y comience por el día 1, en la hoja 2 el recuento mensual parta de "0" pero que el recuento anual continué por donde iba.

Realmente no se si se podrá hacer pero si se puede se que tu sabrás como hacerlo.

1 Respuesta

Respuesta
1

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

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. 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

.

Buenas tardes, perfecto, increíble la verdad, lo he probado con el ejemplo que te envié y funciona a la perfección. Ahora me surge la siguiente duda para poder completarla yo. Te envié un ejemplo simplificado de lo que quería.

Ahora con la macro que me enviaste, si quiero que cada día se añada en la hoja1 datos en la celda "C5" (que es la que te puse en el ejemplo) y además en la "C6","C7" etc, y que esto se acumule en la hoja2 en las celdas "C5"(DÍA) "D5"(MES) "E5"(AÑO) y además más celdas 6, 7, etc según haya rellenado en la hoja1, ¿dónde debo completarlo dentro de la macro?

Con gusto te ayudo con la actualización de la macro, valora esta respuesta y crea una nueva pregunta. Ya que ahora hay que modificar la macro y controlar un incremento de fila.

La pregunta no admite más respuestas

Más respuestas relacionadas