Macro para calculo de promedio Excel 2003 (va dirigida a Dante Amor)

Lo que necesitaría es obtener una macro en la cual me permita calcular los totales con sus promedios según se le indiquen, puede ser 2, 3, 6, 8 o 12 meses.-

Ej. - Supongamos que estoy en el Mes de Marzo y quiero saber los consumo y promedio de los últimos 3 meses (Calculara Enero, Febrero, y los consumos de Marzo al día de la fecha)

Otro ej. Supongamos que me encuentro en el Mes de Noviembre y como tengo que proyectar los futuros consumos, quisiera saber los consumo y promedio de los últimos 5 meses (calculara Junio, Julio, Agosto, Septiembre, y Octubre)

En conclusión que me permita poder ingresar la fechas previamente al calculo de consumos y promedio de cada código.-

Te mando por correo el ultimo archivo

1 respuesta

Respuesta
1

Podrías enviarme un ejemplo del resultado que esperas.

¿Quieres ingresar fechas o solamente números de meses?

Si estás en febrero y quieres los 5 meses anteriores, quieres: sep, oct, ¿nov y dic del año pasado y ene de este año?

Recuerda explicar todo con ejemplos con datos .

Buen día, ya te envié, un ejemplo (Ene, Feb, Mar), en la hoja denominada "ConsumoiMensual", pero si vos quieres se puede cargar en la "ConsumoAnual", te lo dejo a tu criterio, el objetivo es permitir mediante la macro saber los consumos y los promedio que previamente se definieron a solicitar los meses a calcular .-

Considero mejor ingresar Meses.-

Tenes razón cuando necesito los ultimo 5 meses, estoy considerando sep, oct, nov y dic del año pasado y ene de este.-

Saludos

Esta es la macro para informes mensuales

Sub InformeMes()
'Por.Dante Amor
    Dim fec1 As Date
    Dim fec2 As Date
    '
    Application.ScreenUpdating = False
    u = Hoja10.Range("A" & Rows.Count).End(xlUp).Row
    If u < 3 Then u = 3
    Hoja10.Range("A2:P" & u).ClearContents
    '
    dmes = UserForm1.ComboBox1
    daño = UserForm1.ComboBox2
    '
    ames = UserForm1.ComboBox3
    aaño = UserForm1.ComboBox4
    adia = Day(DateSerial(Year(aaño), ames + 1, 1) - 1)
    [G1] = DateSerial(daño, dmes, 1)
    [G2] = DateSerial(aaño, ames, adia)
    m = Evaluate("=DATEDIF(G1,G2,""ym"")")
    '
    For i = 2 To Hoja4.Range("A" & Rows.Count).End(xlUp).Row
        '
        If Hoja4.Cells(i, "B") >= [G1] And _
           Hoja4.Cells(i, "B") <= [G2] Then
            Set b = Hoja10.Range("A:A").Find(Hoja4.Cells(i, "A"), LookAt:=xlWhole)
            '
            colmes = Month(Hoja4.Cells(i, "B")) + 2
            If Not b Is Nothing Then
                Hoja10.Cells(b.Row, colmes) = Hoja10.Cells(b.Row, colmes) + Hoja4.Cells(i, "D")
            Else
                Set c = Hoja1.Range("A:A").Find(Hoja4.Cells(i, "A"), LookAt:=xlWhole)
                If Not c Is Nothing Then
                    desc = Hoja1.Cells(c.Row, "B")
                End If
                u = Hoja10.Range("A" & Rows.Count).End(xlUp).Row + 1
                Hoja10.Cells(u, "A") = Hoja4.Cells(i, "A")
                Hoja10.Cells(u, "B") = desc
                Hoja10.Cells(u, colmes) = Hoja4.Cells(i, "D")
            End If
        End If
    Next
    '
    'totales
    For i = 2 To Hoja10.Range("A" & Rows.Count).End(xlUp).Row
        Hoja10.Cells(i, "O") = Application.Sum(Hoja10.Range("C" & i & ":N" & i))
        Hoja10.Cells(i, "P") = Hoja10.Cells(i, "O") / m
    Next
    [G1] = ""
    [G2] = ""
    Hoja10.Select
    MsgBox "Informe Mensual Terminado", vbInformation
End Sub

NOTA: El promedio se calcula en base al total de meses seleccionados

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas