Macro listar valores únicos y sumar

Necesito una macro para listar valores únicos de una lista y sumar los valores asociados a esos datos únicos.

En la columna A está una lista de nombres, en la columna B están los saldos correspondientes a esos nombres. Lo que necesito es que mediante una macro poder listar nombres únicos en la fila D y en la D se sume el total correspondiente a cada nombre filtrado.

Espero haberme explicado y de antemano le quedo infinitamente agradecido a quien me eche una mano.

1 respuesta

Respuesta
3

Utiliza la siguiente macro. Tus nombres deberán iniciar en la celda A2.

Sub subtotales()
'Por.DAM
    ant = Cells(2, "A")
    j = 2
    Set h1 = ActiveSheet
    h1.Columns("C:D").ClearContents
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    With h1.Sort
       .SortFields.Clear: .SortFields.Add Key:=h1.Range("A2:A" & u)
       .SetRange h1.Range("A2:B" & u): .Header = xlYes: .Apply
    End With
    For i = 2 To u + 1
        If Cells(i, "A") <> ant Then
            Cells(j, "C") = ant
            Cells(j, "D") = tot
            tot = 0
            j = j + 1
        End If
        tot = tot + Cells(i, "B")
        ant = Cells(i, "A")
    Next
End Sub

También puedes obtener los subtotales de los nombres con un tabla dinámica. Para ello, selecciona tus datos incluyendo los títulos, selecciona del menú: Insertar. Selecciona tabla dinámica. Marca la opción "Hoja de cálculo existente". En Ubicación selecciona o escribe la celda C3. Presiona aceptar. Del lado derecho te aparece una ventana con la lista de campos de la tabla dinámica. Marca las casillas de Nombres y valores. Listo, tienes los subtotales.

Otra opción para subtotales es la siguiente: Selecciona tus datos incluyendo los títulos. Del menú selecciona Datos. En la ficha Esquema encontrarás el botón Subtotal. Presiona el botón subtotal. Por default te va a aparecer: "Para cada cambio en:" y ahí debe aparecer "Nombres" Usar función "Suma" y Agregar subtotal "Valores". Presiona Aceptar. Esta forma de subtotales te los pone en las mismas columnas. Del lado izquierdo te aparecen los números 1,2 y 3, presiona el número 2 y los subtotales se agruparan.

Perfecto eso era lo que estaba buscando los otros métodos los conozco muy bien mi debilidad son las macros. Ahora abusando un poco de tu ayuda y conocimientos no sé si me podrías ayudar para que en lugar de que los datos filtrados se ingresen en la columna c y d de la hoja 1 se pasen a la siguiente fila vacía de las columna a y b en la hoja 2? Otra vez agradezco desde ya tu tiempo y ayuda

Esta es la macro mejorada. Deberás tener 2 hojas "hoja1" y "hoja2"

Sub subtotales()
'Por.DAM
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    u = h1.Range("A" & Rows.Count).End(xlUp).Row
    With h1.Sort
       .SortFields.Clear: .SortFields.Add Key:=h1.Range("A2:A" & u)
       .SetRange h1.Range("A1:B" & u): .Header = xlYes: .Apply
    End With
    ant = h1.Cells(2, "A")
    j = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
    For i = 2 To u + 1
        If h1.Cells(i, "A") <> ant Then
            h2.Cells(j, "A") = ant
            h2.Cells(j, "B") = tot
            tot = 0
            j = j + 1
        End If
        tot = tot + h1.Cells(i, "B")
        ant = h1.Cells(i, "A")
    Next
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas