Macro para sumar valores de diferentes hojas en una celda en una hoja predeterminada.

Para: Dante

Nuevamente recurriendo a tu magnifica y asombrosa ayuda, tengo una hoja pre-determinada en la que ciertas celdas suman los valores de las diferentes hojas que tengo, estas hojas tienen nombre de calendario y me gustaría saber si se pudiera realizar con una macro la suma total del mes en ciertas celdas que tiene esta hoja es decir que solo me sume los valores del mes; por ejemplo tengo 40 hojas de las cuales 31 llevan nombre de calendario por lo tanto en la hoja pre-determinada ("ACUMULADO"), se sumaran los valores del mes.

1 respuesta

Respuesta
1

Pon la siguiente macro en los eventos de tu hoja "acumulado"

Private Sub Worksheet_Activate()
'Por.Dante Amor
    For Each h In Sheets
        If InStr(1, h.Name, ".") > 0 Then
            suma_N7 = suma_N7 + h.[N7]
            suma_P7 = suma_P7 + h.[P7]
            suma_R7 = suma_R7 + h.[R7]
            suma_N12 = suma_N12 + h.[N12]
            suma_P12 = suma_P12 + h.[P12]
            suma_R12 = suma_R12 + h.[R12]
        End If
    Next
    [N7] = suma_N7
    [P7] = suma_P7
    [R7] = suma_R7
    [N12] = suma_N12
    [P12] = suma_P12
    [R12] = suma_R12
End Sub

Saludos.Dante Amor

Hola! Dante

Relativamente esta Genial , al sumar  01.02.2015 hasta el 28.02.2015 que son mis hojas esta bien, pero yo al ingresar valores en la hoja que lleva el nombre 01.03.2015 también me la suma esta no debería de sumarla ya que es un mes aparte.

¿Y cómo saber cuál es el mes que se debe sumar?

Con este cambio le dices que sume las hojas que tienen el mes 02.

Private Sub Worksheet_Activate()
'Por.Dante Amor
    For Each h In Sheets
        If InStr(1, h.Name, ".") > 0 Then
            mes = Mid(h.Name, 4, 2)
            If mes = "02" Then
                suma_N7 = suma_N7 + h.[N7]
                suma_P7 = suma_P7 + h.[P7]
                suma_R7 = suma_R7 + h.[R7]
                suma_N12 = suma_N12 + h.[N12]
                suma_P12 = suma_P12 + h.[P12]
                suma_R12 = suma_R12 + h.[R12]
            End If
        End If
    Next
    [N7] = suma_N7
    [P7] = suma_P7
    [R7] = suma_R7
    [N12] = suma_N12
    [P12] = suma_P12
    [R12] = suma_R12
End Sub

Pero tu hoja se llama "Acumulado feb", tendrías que hacer una relación de "feb" con el número de mes. Quedaría así:

Private Sub Worksheet_Activate()
'Por.Dante Amor
    Select Case Right(ActiveSheet.Name, 3)
        Case "ENE": mes = "01"
        Case "FEB": mes = "02"
        Case "MAR": mes = "03"
        Case "ABR": mes = "04"
        Case "MAY": mes = "05"
        Case "JUN": mes = "06"
        Case "JUL": mes = "07"
        Case "AGO": mes = "08"
        Case "SEP": mes = "09"
        Case "OCT": mes = "10"
        Case "NOV": mes = "11"
        Case "DIC": mes = "12"
    End Select
    For Each h In Sheets
        If InStr(1, h.Name, ".") > 0 Then
            hojames = Mid(h.Name, 4, 2)
            If hojames = mes Then
                suma_N7 = suma_N7 + h.[N7]
                suma_P7 = suma_P7 + h.[P7]
                suma_R7 = suma_R7 + h.[R7]
                suma_N12 = suma_N12 + h.[N12]
                suma_P12 = suma_P12 + h.[P12]
                suma_R12 = suma_R12 + h.[R12]
            End If
        End If
    Next
    [N7] = suma_N7
    [P7] = suma_P7
    [R7] = suma_R7
    [N12] = suma_N12
    [P12] = suma_P12
    [R12] = suma_R12
End Sub

Saludos.Dante Amor

Hola! Dante 

Gracias por la respuesta, te comento que tengo 49 hojas de las cuales 40 son las que llevan nombre de fechas y estas siempre están cambiando de nombre según calendario, en cuanto a la hoja "Acumulado" no se si se puede trabajar con la instrucción  ( CodeName), para que a si la hoja acumulado discrimine en que mes esta y pueda sumar el principio y final del mes que hay en las hojas, la segunda macro que indicas seria genial ya que esta indica los meces pero lo probé y no me da el resultado.

Regreso a mi pregunta original

¿Y cómo saber cuál es el mes que se debe sumar?

Tu hoja acumulado, por lo menos en el archivo que yo tengo dice "acumulado feb", por eso te suma las hojas que pertenezcan a 02.

En cuanto al codename, no es necesario, ya que la macro se activa en la hoja en donde pusiste la macro, en este caso pusiste la macro en los eventos de la hoja "acumulado feb", no importa el nombre que tenga, la macro sigue en la misma hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas