How close am I to what you want?
Option Explicit
Sub MainMacro()
Dim ws1 As Worksheet: Set ws1 = Sheets("Centralized")
Dim lastrow As Long, lastcol As Long, icol As Long
Dim icell As Range
lastrow = ws1.Range("A" & Rows.Count).End(xlUp).Row
lastcol = ws1.Cells(1, Columns.Count).End(xlToLeft).Column
For icol = 3 To lastcol
For Each icell In ws1.Range(ws1.Cells(2, icol), ws1.Cells(lastrow, icol))
If icell.Value = "X" Then
If Sheets(Sheets.Count).Name <> ws1.Cells(1, icol).Value Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = ws1.Cells(1, icol).Value
icell.EntireRow.Copy _
Destination:=Sheets(ws1.Cells(1, icol).Value).Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
Else
icell.EntireRow.Copy _
Destination:=Sheets(ws1.Cells(1, icol).Value).Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
End If
End If
Next icell
Next icol
End Sub
Bookmarks