Sumar el contenido de 1 rango que cumpla 1 condición

Me estoy dando cabezazos contra la mesa porque no consigo realizar lo siguiente:
Tengo un rango dado (A1..BZ1) con formato fecha 00/00/0000, con valores tales como 01/02/2010   03/02/2010  ..... 15/03/2011.
En otro rango (B2.. BZ2) existen ciertos valores en formato numérico (ingresos de ese día)
Lo que yo quisiera es poder sumar todos aquellos valores del rango B2.. Z2 que se den en febrero de 2010 (mes y año) y ponerlo en una celda. Lo mismo para el siguiente mes, y así sucesivamente. Cada sumatorio en una celda distinta.
Nota. El número de celdas que contienen el mismo mes y año es variable.

1 Respuesta

Respuesta
1
Crea un modulo en el editor de VBA (Alt + F11), inserta un modulo y pega esta Función
?Public Function SumaMes(ByVal Mes As String, ByVal Fechas As Range, ByVal Valores As Integer) As Double
Dim C As Range
For Each C In Fechas
    If UCase(Format(CDate(C.Value), "MMMM")) = UCase(Mes) Then
        SumaMes = SumaMes + C.Offset(0, Valores).Value
    End If
Next
End Function
Y la usas como cualquier otra fórmula con estos parámetros:
SumaMes(Mes, Rango de Fechas, Columna de Valores)
Mes - Puedes escribirlo manualmente (Enero por ejm) o poner una celda de referencia
Rango de Fechas - Selecciona el rango de la columna de las Fechas
Columna de Valores - Numero de Columnas que hay después de la columna de Fechas
En este ejemplo, la Columna de Valores esta en la Siguiente Columna después de la de Fechas.
Gracias jerryeagle por responder.
Pero no funciona.
Pues yo la probé y si funciona, mandame tu archivo para checarlo.
[email protected]
Te lo mando.
Ya te mande el archivo, de todos modos pongo la macro corrgida
Function SumaMes(ByVal Mes As String, ByVal Fechas As Range, _
                ByVal Valores As Integer) As Double
Dim C As Range
Dim Año, aAño, mMes As String
Año = UCase(Trim(Right(Mes, 4)))
Mes = Trim(UCase(Left(Mes, (Len(Mes) - 5))))
For Each C In Fechas
    mMes = UCase(Trim(UCase(Format(CDate(C.Value), "MMMM"))))
    aAño = Trim(Str(Right(C.Value, 4)))
    If mMes = Mes And aAño = Año Then
        SumaMes = SumaMes + C.Offset(Valores, 0).Value
    End If
Next
End Function

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas