The copy value method is not the bottleneck. It's hard to say what is without seeing your actual workbook. If you copy the 15000 rows in your example workbook, you can see how fast it is.

The code below suspends Calculations, Events, and Screenupdating while copying. This may improve the speed.

Sub Copy_to_Matched_Column()
    
    Dim Found As Range, lCalcState As Long
    
    Set Found = Range("D1:R1").Find(What:=Range("B1").Value, _
                                    LookIn:=xlValues, _
                                    LookAt:=xlWhole, _
                                    SearchOrder:=xlByColumns, _
                                    SearchDirection:=xlNext, _
                                    MatchCase:=False)
    If Not Found Is Nothing Then
        With Application
            lCalcState = .Calculation
            .Calculation = xlCalculationManual
            .EnableEvents = False
            .ScreenUpdating = False
                Found.Offset(1).Resize(14998).Value = Range("A3:A15000").Value
            .Calculation = lCalcState
            .EnableEvents = True
            .ScreenUpdating = True
        End With
    Else
        MsgBox "No column match found. ", , "No Column Match"
    End If
    
End Sub