Hi jabe!
Private Sub CommandButton1_Click()
Dim arr, arr1, arr2, arrRst, i&, j&, k&, r&, sh As Worksheet, rng As Range
arr = Sheets("INPUT").[a1].CurrentRegion
arr1 = Sheets("BASE").[a1].CurrentRegion
ReDim arrRst(1 To (UBound(arr) - 1) * UBound(arr1), 1 To UBound(arr1, 2))
For i = 2 To UBound(arr)
Set rng = Sheets("EXCLUDE").Columns(1).Find(arr(i, 1), LOOKAT:=xlWhole)
If rng Is Nothing Then
For k = 2 To UBound(arr1)
r = r + 1
arrRst(r, 1) = Replace(arr1(k, 1), "PHONE", arr(i, 1))
For j = 2 To UBound(arr1, 2)
arrRst(r, j) = arr1(k, j)
Next j
Next k
r = r + 1
End If
Next i
On Error Resume Next
Set sh = Sheets("RESULT")
If sh Is Nothing Then
Worksheets.Add(After:=Sheets(Sheets.Count)).Name = "RESULT"
Else
sh.Cells.Clear
End If
On Error GoTo 0
ReDim arr2(1 To UBound(arr1, 2))
For j = 1 To UBound(arr2)
arr2(j) = arr1(1, j)
Next j
With Sheets("RESULT")
.[a1].Resize(, UBound(arr2)) = arr2
.[a2].Resize(UBound(arrRst), UBound(arrRst, 2)) = arrRst
.Activate
.Copy
ActiveSheet.SaveAs ThisWorkbook.Path & "/" & .Name & Format(Now(), "hhmmss"), xlCSV
ActiveWorkbook.Close False
End With
End Sub