Try this amendment
Sub Button1_Click()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet3")
With ThisWorkbook
Call CopyValues(.Sheets("Sheet1"), ws, 1)
Call CopyValues(.Sheets("Sheet1"), ws, 6)
Call CopyValues(.Sheets("Sheet1"), ws, 11)
Call CopyValues(.Sheets("Sheet1"), ws, 16)
End With
End Sub
Private Sub CopyValues(this As Worksheet, target As Worksheet, col As Long)
Dim cell As Range
Dim firstaddress As String
Dim lastrow As Long
With this
lastrow = target.Cells(target.Rows.Count, col).End(xlUp).Row + 1
Set cell = .Columns(col + 1).Find(.Range("H1").Value)
If Not cell Is Nothing Then
firstaddress = cell.Address
Do
cell.Offset(0, -1).Resize(, 4).Copy target.Cells(lastrow, col)
Set cell = .Columns(col + 1).FindNext(cell)
lastrow = lastrow + 1
Loop Until cell.Address = firstaddress
End If
End With
End Sub