"change event" is inconvenience in this case.
please try this.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cc As Range, c As Range
Dim ws As Worksheet, r As Long, i As Long, m
On Error Resume Next
Set cc = Intersect(Columns(6), Target)
On Error GoTo 0
If cc Is Nothing Then Exit Sub
For Each c In cc
Set ws = Nothing
On Error Resume Next
Set ws = Worksheets(c.Value)
On Error GoTo 0
If Not ws Is Nothing Then
r = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
For i = 1 To 5
m = Application.Match(Cells(1, i), ws.Rows(1), 0)
If IsNumeric(m) Then
c.EntireRow.Cells(i).Copy
ws.Cells(r, m).PasteSpecial xlPasteValues
End If
Next
End If
Next
End Sub