Option Explicit
Sub Test()
Dim wsR As Worksheet: Set wsR = Sheets("Report ")
Dim wsD As Worksheet: Set wsD = Sheets("Data")
Dim CustID As String: CustID = wsR.[F3].Value
Dim FromDt As Long: FromDt = wsR.[C3].Value
Dim ToDt As Long: ToDt = wsR.[D3].Value
Dim cAr As Variant, pAr As Variant, nRow As Long, x As Long
Dim lr As Long: lr = wsD.Range("A" & Rows.Count).End(xlUp).Row
Dim lrR As Long: lrR = wsR.Range("A" & Rows.Count).End(xlUp).Row
cAr = Array("A8:A" & lr, "B8:B" & lr, "D8:D" & lr, "E8:E" & lr, "G8:G" & lr, "I8:I" & lr, "J8:J" & lr, _
"K8:K" & lr, "Z8:Z" & lr, "AC8:AC" & lr, "AD8:AD" & lr, "AE8:AE" & lr, "AJ8:AJ" & lr, "AO8:AO" & lr)
pAr = Array("A", "G", "L", "B", "E", "F", "D", "C", "H", "I", "J", "K", "M", "N")
If lrR < 8 Then lrR = 8
wsR.Range("A8:N" & lrR).Delete
nRow = wsR.Cells(Rows.Count, 1).End(xlUp).Row + 1
Application.ScreenUpdating = False
If wsR.Range("C3,D3,F3") = vbNullString Then Exit Sub
With wsD.[A7].CurrentRegion
.AutoFilter 11, CustID
With .Offset(1)
.AutoFilter 5, ">=" & FromDt, xlAnd, "<=" & ToDt
For x = LBound(cAr) To UBound(cAr)
wsD.Range(cAr(x)).Copy
wsR.Range(pAr(x) & nRow).PasteSpecial xlValues
Next x
.AutoFilter
End With
End With
wsR.Range("A8", wsR.Range("N" & wsR.Rows.Count).End(xlUp)).Borders.Weight = xlThin
wsR.Range("A8", wsR.Range("N" & wsR.Rows.Count).End(xlUp)).Sort wsR.[A8], 1
wsR.Columns.AutoFit
wsR.[C3:F3].ClearContents
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub