Copie dados de uma planilha do Excel para outra (complexa) usando o VBA com base no nome da coluna

Sou muito novo no VBA e, depois de 5 horas assistindo a vídeos e pesquisando no Google, acho que isso é demais ... qualquer ajuda é muito apreciada.

Então, eu tenho 2 planilhas do Excel: Sheet1 e Sheet2. Eu tenho uma coluna S / N na Planilha1 e, se a coluna = "S", desejo copiar todos os dados dessa linha que possui um nome de coluna correspondente na Planilha2.

Sheet1
Product     Price     SalesPerson    Date    Commission     Y/N
  A          $25         John       1/9/15      $3           Y 
  B          $20         John       1/12/15     $2           N  
  B          $15         Brad       1/5/15      $1           Y

Sheet2
Price     Product     Date     Salesperson   

Portanto, sempre que Y / N = Y, copie os dados que correspondem à planilha2 e faça isso até que a plan1.col1 seja nula (em loop). O resultado seria este:

Sheet2
Price     Product     Date     Salesperson
 $25         A       1/9/15        John
 $15         B       1/5/15        Brad

As colunas não estão em ordem e são numerosas demais para serem inseridas manualmente. Por último, mas não menos importante, a coluna S / N precisaria ser limpa após o término. Eu tentei alterar isso sem sorte:

Sub CopyHeaders()
Dim header As Range, headers As Range
Set headers = Worksheets("Sheet1").Range("A1:Z1")

For Each header In headers
    If GetHeaderColumn(header.Value) > 0 Then
        Range(header.Offset(1, 0), header.End(xlDown)).Copy Destination:=Worksheets("Sheet2").Cells(2, GetHeaderColumn(header.Value)).End(xlDown).Offset(1, 0)
    End If
Next
End Sub

Function GetHeaderColumn(header As String) As Integer
Dim headers As Range
Set headers = Worksheets("Sheet2").Range("A1:Z1")
GetHeaderColumn = IIf(IsNumeric(Application.Match(header, headers, 0)), Application.Match(header, headers, 0), 0)
End Function

Isso foi projetado para fazer algo diferente do que estou tentando fazer e não acho que sou capaz de mudar isso para funcionar para mim. Como faço isso?

questionAnswers(3)

yourAnswerToTheQuestion