Macro para calcular consumos mensuales y promedio en Excel 2003

Estoy trabajando en una planilla de Excel 2003 donde se registran las salidas de elementos (Salidas.xls) en ella figura el código, la fecha, el cliente, y por ultimo la cantidad solicitada.

También arme otra planilla (ConsumoAnual.xls) en ella se encuentran parte de los códigos que tiene el sistema (Aproximadamente 500), donde figura el código, la denominación, meses y por ultimo una columna de totales y promedio del año.

Lo que pretendo es realizar una macro que recorra los códigos en la planilla consumoAnula trasladar los consumos totales mes por mes de cada uno y al final realice la sumatoria total y promedio de cada uno de los códigos que se encuentra en la planilla Salidas.-

1 respuesta

Respuesta
1

Me puedes enviar tu archivo, de igual forma explícame con ejemplos el resultado que esperas.

Recuerda pone tu nombre en el asunto del correo.

Hola, termino de mandarte por correo los archivos.

saludos

Esta es la macro para calcular el consumo por mes, poner los totales y promedio por artículo

Sub informe()
'Por.Dante Amor
    u = Hoja9.Range("A" & Rows.Count).End(xlUp).Row
    If u < 3 Then u = 3
    Hoja9.Range("A2:P" & u).ClearContents
    '
    'u = Hoja4.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To Hoja4.Range("A" & Rows.Count).End(xlUp).Row
        Set b = Hoja9.Range("A:A").Find(Hoja4.Cells(i, "A"), LookAt:=xlWhole)
        mes = Month(Hoja4.Cells(i, "B")) + 2
        If Not b Is Nothing Then
            Hoja9.Cells(b.Row, mes) = Hoja9.Cells(b.Row, mes) + 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 = Hoja9.Range("A" & Rows.Count).End(xlUp).Row + 1
            Hoja9.Cells(u, "A") = Hoja4.Cells(i, "A")
            Hoja9.Cells(u, "B") = desc
            Hoja9.Cells(u, mes) = Hoja4.Cells(i, "D")
        End If
    Next
    '
    'totales
    For i = 2 To Hoja9.Range("A" & Rows.Count).End(xlUp).Row
        Hoja9.Cells(i, "O") = Application.Sum(Hoja9.Range("C" & i & ":N" & i))
        Hoja9.Cells(i, "P") = Application.Average(Hoja9.Range("C" & i & ":N" & i))
    Next
    Hoja9.Select
    MsgBox "Informe Anual Terminado", vbInformation
End Sub

Excelente lo tuyo, pero por favor creo que esta calculando mal el promedio no toma en cuenta la cantidad de meses que se cargan los datos en este caso 11 meses.-

También necesito saber como calcular si necesitan el promedio de los últimos 3 meses.-

Te anexo el código para el promedio

Sub informe()
'Por.Dante Amor
    u = Hoja9.Range("A" & Rows.Count).End(xlUp).Row
    If u < 3 Then u = 3
    Hoja9.Range("A2:P" & u).ClearContents
    '
    'u = Hoja4.Range("A" & Rows.Count).End(xlUp).Row
    For i = 2 To Hoja4.Range("A" & Rows.Count).End(xlUp).Row
        Set b = Hoja9.Range("A:A").Find(Hoja4.Cells(i, "A"), LookAt:=xlWhole)
        mes = Month(Hoja4.Cells(i, "B")) + 2
        If Not b Is Nothing Then
            Hoja9.Cells(b.Row, mes) = Hoja9.Cells(b.Row, mes) + 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 = Hoja9.Range("A" & Rows.Count).End(xlUp).Row + 1
            Hoja9.Cells(u, "A") = Hoja4.Cells(i, "A")
            Hoja9.Cells(u, "B") = desc
            Hoja9.Cells(u, mes) = Hoja4.Cells(i, "D")
        End If
    Next
    '
    'totales
    For i = 2 To Hoja9.Range("A" & Rows.Count).End(xlUp).Row
        Hoja9.Cells(i, "O") = Application.Sum(Hoja9.Range("C" & i & ":N" & i))
        Hoja9.Cells(i, "P") = Hoja9.Cells(i, "O") / 12
    Next
    Hoja9.Select
    MsgBox "Informe Anual Terminado", vbInformation
End Sub

Para los 3 meses crea la pregunta respectiva y me explicas con un ejemplo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas