Que macro sirve para sumar un rango de celdas si y solo si en otro rango tienen por ejemplo el nombre de pepito perez

En la columna E tengo 5 veces a pepito pero más abajo en la fila 6 tengo a pepe y más abajo tengo otro nombre y así consecutivamente, cada uno tiene 3 o 4 o 6 filas pero en cada fila corresponde un valor diferente de gastos, como hago para que se sumen solo las de pepito o solo las de pepe o así sabiendo que pepe o pepito no son los únicos, es decir y varios usuarios ...

2 respuestas

Respuesta
1

Este es el resultado

y esta es la macro

Sub sumar_nombres()
Set datos = Range("e2").CurrentRegion
With datos
    col = .Columns.Count
    filas = .Rows.Count
    Set tabla = .Columns(col + 3).Resize(filas, 1)
End With
With tabla
    .Columns(1).Value = datos.Columns(1).Value
    .RemoveDuplicates Columns:=1
    .CurrentRegion.Columns(2).Formula = "=sumif(" & datos.Columns(1).Address & _
    "," & .Cells(1).Address(0, 0) & "," & datos.Columns(2).Address(0, 0) & ")"
End With
Set tabla = Nothing: Set datos = Nothing
End Sub

Hola muchas gracias, pero tengo un error. En esta línea dice application -defined or object - defined error

 .RemoveDuplicates Columns:=1

Mira los datos que quiero sumar están. En la columna 39 osea AM5:AM1607 y los datos de comparación de nombres. No son nombres son números que están iguales y están en la columna I5:I1607

Pon una imagen de tus datos adptar la macro

Una pregunta ya pude cuadrar la macro de acuerdo a mi tabla pero ya con los datos que repite y envía a otro lado y que depura necesito hacwr lo mismo pero ahora con 2 columnas, 1 de fechas y otra de nombres

Ya respondí a tu pregunta en el post que publicaste

Respuesta
1

También lo podrías hacer con fórmulas...

Con "SUMAR.SI" Y "INDIRECTO"

Como ves en la imagen la fórmula suma el rango "E5:E25" comparando el rango "D5:D25" con "I5:10" cuando encuentra coincidencia se suma ... espero te sea de utilidad.. recuerda cambiar los rangos por los tuyos esta es la fórmula aplicada en el ejemplo

=SUMAR.SI(INDIRECTO("D5:D25");I5;INDIRECTO("E5:E25"))

Saludos... no olvides valorar la respuesta si te fue de utilidad =)

Compara "D5:D25" con "I5:11" jeje me comi 1 jeje...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas