Esta es la solución, sigue mis pasos:
Nuestro archivo se componede dos hojas: hoja1 y hoja2
En la hoja1 tenemos los datos escritos desde el rango A1. (En nuestro ejemplo el rango ocupa A1:D4)
Tenemos un userform con un combobox y un commandbuttom.
La macro INITIALIZE se encarga de llenar el combo con los nombres sin repeticiones.
Después de seleccionar un nombre y pulsar el botón nos creará en la hoja2, el informe que solicitas.
Si precisas el archivo dime tu mail y te lo mando.
Private Sub CommandButton1_Click()
Sheets("hoja2").UsedRange.Clear
nombre = ComboBox1.Value
Set busca = Sheets("hoja1").Range("a1:a1000").Find(nombre, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
Range("a1").Copy Destination:=Sheets("hoja2").Range("a1")
Range("b1:d1").Copy Destination:=Sheets("hoja2").Range("a3")
ubica = busca.Address
Sheets("hoja2").Range("b1").Value = busca
libre = Sheets("hoja2").Range("a65000").End(xlUp).Row + 1
Do
Sheets("hoja2").Cells(libre, 1) = busca.Offset(0, 1)
Sheets("hoja2").Cells(libre, 2) = busca.Offset(0, 2)
Sheets("hoja2").Cells(libre, 3) = busca.Offset(0, 3)
libre = libre + 1
Set busca = Sheets("hoja1").Range("a1:a1000").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
Sheets("hoja2").Select
Range("c65000").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Sum(Range("c4:c"& Range("c65000").End(xlUp).Row))
End Sub
Private Sub UserForm_Initialize()
Sheets("hoja1").Select
Range("a2").Select
Do While ActiveCell.Value <>
If InStr(valor, ActiveCell) = 0 Then
valor = valor & "," & ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
valor = Mid(valor, 2, Len(valor) - 1)
valor = Split(valor, "," )
For p = 0 To UBound(valor)
ComboBox1.AddItem valor(p)
Next
End Sub
Recuerda finalizar y puntuar