La siguiente rutina se ejecuta cada vez que introduzcas un dato en col E (esto se puede ajustar a otra col y a otra hoja)
Debes entrar al Editor, seleccionar con doble clic la hoja donde vayas a ingresar los datos y copiar esto. Hay varias lìneas que dicen AJUSTAR para que lo adaptes a tus necesidades, sino me consultas nuevamente con todas tus referencias.
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'solo controla ingresos en col E - AJUSTAR
If Target.Column <> 5 Then Exit Sub
'si se modfica un rango o se borran celdas no ejecuta
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
'busca el dato en col B:C de la hoja 3 - AJUSTAR
Set busco = Sheets("Hoja3").Range("B:B").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
'si lo encontró pasa datos debajo de la celda target o activa
If Not busco Is Nothing Then
'inhabilita que se ejecute nuevamente el 'cambio' en celdas
Application.EnableEvents = False
'se pasa en fila de abajo el dato de la col siguiente - AJUSTAR
X = Target.Row + 1
'guardo la fila del dato encontrado
filx = busco.Row
Range("E" & X) = Range("C" & filx).Value
filx = filx + 1
'fila de destino
While Range("B" & filx) = "" And Range("C" & filx) <> ""
X = X + 1
Range("E" & X) = Range("C" & filx).Value
filx = filx + 1
Wend
'inhabilita que se ejecute nuevamente el 'cambio' en celdas
Application.EnableEvents = True
End If
End Sub
PD) Utilicé variables para que puedas ajustar a criterio.
Como la macro inhabilita la ejecución de las macros mientras vuelca los componentes, sería recomendable que coloques en algún módulo lo siguiente, por si en algún caso de error se interrumpa la anterior y así podrás volver a habilitarlas.
Sub activaMacros()
Application.EnableEvents = True
End Sub
Sdos y no olvides valorar esta respuesta.