Sumatorio total por año y cliente para dante amor

Tengo un excel con 5 pestañas, una para cada año 2010-2014. En cada pestaña hay una tabla con 3 culumnas: nr cliente, descripcion cliente e importe. Necesito, en otra pestaña, hacer un resumen. 7 columnas: nr cliente, descripcion, importes 2010, importes 2011... Hasta impprtes 2014. Indico que no en todos los años el listado de clientes es igual.

2 respuestas

Respuesta
2

Te anexo la macro para realizar la sumatoria. Debes crear una hoja llamada "Resumen".

La información en las hojas 2010,2011,2012,2013 y 2014, supongo que la tienes de esta forma:


La información en la hoja "Resumen" te quedará como la siguiente imagen:

En la hoja Resumen pon en la celda A1 y B1 los títulos: "Número Cliente" y "Descripción Cliente"



Sub Sumatorio()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("Resumen")
    uf = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
    h1.Range(h1.Cells(2, 1), h1.Cells(uf, uc)).ClearContents
    h1.Range(h1.Cells(1, 3), h1.Cells(1, uc)).ClearContents
    '
    For Each h In Sheets
        If h.Name <> h1.Name Then
            For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
                Set b = h1.Columns("A").Find(h.Cells(i, "A"), LookAt:=xlWhole)
                If Not b Is Nothing Then
                    Set c = h1.Rows(1).Find(h.Name)
                    If Not c Is Nothing Then
                        uc = c.Column
                    Else
                        uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
                        h1.Cells(1, uc) = h.Name
                    End If
                    h1.Cells(b.Row, uc) = h1.Cells(b.Row, uc) + h.Cells(i, "C")
                Else
                    Set c = h1.Rows(1).Find(h.Name)
                    If Not c Is Nothing Then
                        uc = c.Column
                    Else
                        uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
                        h1.Cells(1, uc) = h.Name
                    End If
                    u = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
                    h1.Cells(u, "A") = h.Cells(i, "A")
                    h1.Cells(u, "B") = h.Cells(i, "B")
                    h1.Cells(u, uc) = h1.Cells(u, uc) + h.Cells(i, "C")
                End If
            Next
        End If
    Next
    uc = h1.Cells(1, Columns.Count).End(xlToLeft).Column + 1
    h1.Cells(1, uc) = "Total"
    For i = 2 To h1.Range("A" & Rows.Count).End(xlUp).Row
        h1.Cells(i, uc) = Application.Sum(h1.Range(h1.Cells(i, "C"), h1.Cells(i, uc - 1)))
    Next
    '
    uf = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Cells(uf, "B") = "Total"
    h1.Range("C" & uf) = "=SUM(C2:C" & uf - 1 & ")"
    h1.Range("C" & uf).AutoFill h1.Range(h1.Cells(uf, "C"), h1.Cells(uf, uc)), xlFillDefault
    Application.ScreenUpdating = True
    MsgBox "Sumatorio total por año", vbInformation, "TERMINADO " & Date
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
    1. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: Sumatorio
  9. Aceptar.
  10. Para ejecutarla dale click a la imagen.

También te anexo mi archivo con la macro para que revises la estructura y contenido de las hojas, puedes descargar el archivo en el siguiente enlace:

https://www.dropbox.com/s/y1ueljizn0i3yy7/sumatorio.xlsm?dl=0 


Respuesta

No soy Dante pero te doy la pista de cómo conseguir lo que pides.

Puedes emplear la herramienta Consolidar, que admite resumir información de diferentes orígenes (hojas) siempre que, al menos la primera columna sea constante en todos los orígenes

Te dejo algunos links para que puedas construir tu resumen (verás que es muy sencillo):

http://excelforo.blogspot.com.es/2009/10/consolidar-herramienta-avanzada-de.html 

http://excelforo.blogspot.com.es/2010/10/un-ejemplo-de-la-herramienta-consolidar.html 

También podrías hacer lo mismo con tablas dinámicas

http://excelforo.blogspot.com.es/2010/10/un-ejemplo-de-consolidacion-multiple-en.html 

Espero te sirva ..

www.excelforo.blogspot.com

Muchas gracias. En mi caso la columna no es constante, ya que como decía no todos los años los clientes son iguales. Un saludo

Es suficiente que el 'concepto' del campo sea el mismo..

Indicabas que en todas las hojas los campos siempre eran

Nr cliente, descripcion cliente e importe

Solo tendrías que hacer un trabajo previo renombrando en cada hoja el campo Importe por 'Importe 2010', 'Importe 2011', ...'Importe 2014'

No importa si hay o no los mismos elementos en la primera columna (la de nr clientes).

Slds

Hola de nuevo. No consigo obtener lo que necesito siguiendo las indicaciones, quizás no me explique bien.

Adjunto un excel de ejemplo con más detalle. Lo que necesito ahora es general la pestaña "totales".

Un saludo, muchas gracias y disculpa las molestias.

No se cómo adjuntar el archivo excel...

Envíamelo a

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas