Macro que consolide cantidades de acuerdo al cliente

Tengo un archivo excel con entregas para despacho que van desde la columna A hasta la R.

Lo que hago con mi archivo mediante una tabla dinámica es consolidar "Código - Descripción - Cant", como criterio de búsqueda tengo al cliente y su categoría (B1 - B2), lo que hace la T.D. Es sacarme cantidades consolidadas, por esos dos criterios.

Mi idea es que una macro haga esa tarea ya que que es un proceso repetitivo para almacén donde trabajo, es decir pego mi base de datos y con un botón consolidar muestre lo que se hace con tabla dinámica.

A la espera de su acostumbrado apoyo.

1 Respuesta

Respuesta
1

Y ya probaste poner el cliente y la categoría como columnas. De esa forma tendrás los consolidados por cliente y categoría; y desde luego, por código y descripción.

Pero si aun así quieres la macro, qué resultado esperas. Quieres consolidar por cliente y categoría, ven en tu imanten 3 clientes y 2 categorías, si las combinamos nos darían 6 reportes consolidados, en dónde quieres que se ponga cada uno de los 6 reportes.

Estimado Dante:

Para explicar mejor la idea te lo he separado en una sola foto ya que la anterior tiene mas hojas que es otro tema.

Te detallo lo que hago manual.

Paso 1: Pego mi archivo en el libro excel, la hoja "Ruteo"

Paso 2: En la hoja consolidado hago una tabla dinámica, la cual tengo que esta cambiando el origen de los datos por que mi archivo es variable en datos ( de un registro a n registros)

En la foto al lado izquierdo esta como hago la tabla dinámica y que campos jalo.

En la parte izquirda resaltada en celeste muestro la idea que como quiero la macro, es decir que al seleccionar cliente y categoría muestre los registros debajo de los encabezados resaltados en azul ya consolidados como lo hace una tabla dinámica.

en mi base de datos en la hoja ruteo cliente esta (Columna H) y Categoría (Columna G)

Espero se entienda la idea y me puedas ayudar

Más o menos.

Envíame tu archivo para hacer pruebas

Estimado Dante te envié el correo para las pruebas.

Te anexo la macro

Sub Consolidar()
'Por.Dante Amor
'
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = Sheets("Ruteo")
    Set h2 = Sheets("Consolidado")
    Set h3 = Sheets("Hoja1")
    h3.Cells.Clear
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
    If u2 < 5 Then u2 = 5
    h2.Range("A5:C" & u2).ClearContents
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        h1.Name & "!R1C1:R" & u1 & "C18", Version:=xlPivotTableVersion12).CreatePivotTable _
        TableDestination:="Hoja1!R1C1", TableName:="Tabla dinámica4", _
        DefaultVersion:=xlPivotTableVersion12
    With h3.PivotTables("Tabla dinámica4").PivotFields("Cliente")
        .Orientation = xlPageField
        .Position = 1
    End With
    With h3.PivotTables("Tabla dinámica4").PivotFields("Categoria")
        .Orientation = xlPageField
        .Position = 1
    End With
    With h3.PivotTables("Tabla dinámica4").PivotFields("Codigo")
        .Orientation = xlRowField
        .Position = 1
    End With
    With h3.PivotTables("Tabla dinámica4").PivotFields("Descripcion")
        .Orientation = xlRowField
        .Position = 2
    End With
    h3.PivotTables("Tabla dinámica4").AddDataField h3.PivotTables _
        ("Tabla dinámica4").PivotFields("Cant"), "Suma de Cant", xlSum
    With h3.PivotTables("Tabla dinámica4")
        .InGridDropZones = True
        .RowAxisLayout xlTabularRow
    End With
    cliente = h2.[B1]
    catego = h2.[B2]
    h3.PivotTables("Tabla dinámica4").PivotFields("Codigo").Subtotals = _
        Array(False, False, False, False, False, False, False, False, False, False, False, False)
    H3. PivotTables("Tabla dinámica4"). PivotFields("Cliente"). _
        ClearAllFilters
    H3. PivotTables("Tabla dinámica4"). PivotFields("Cliente").CurrentPage _
        = cliente
    H3. PivotTables("Tabla dinámica4"). PivotFields("Categoria"). _
        ClearAllFilters
    H3. PivotTables("Tabla dinámica4"). PivotFields("Categoria"). _
        CurrentPage = catego
    u3 = h3.Range("A" & Rows.Count).End(xlUp).Row
    H3.Range("A6:C" & u3). Copy
    H2. Range("A5"). PasteSpecial xlValue
    Application.ScreenUpdating = True
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas