Written in VBAX Editor >> UnTested:
Sub createList()
'Save up to 4 columns, in Column order, to arr, if Column Header match value in WantedHeaders
WantedHeaders = Array("Sales order", "Name", "Record", "Order type")
ULimitWantedHeaders = UBound(WantedHeaders) 'Set once, use many times
lRow = Sheets("Orders").Range("C1").CurrentRegion.Rows.Count
Redim arr(1 To lRow, 1 To ULimitWantedHeaders+1)
arrIndex = 0
For Col = 1 To LastUsedColumn of Sheets("Orders")
For HeaderNum = 0 To ULimitWantedHeaders
If Cells(1, Col).Value = WantedHeaders(HeaderNum) Then
arr(arrIndex) = Cells(1, Col).Resize(Lrow, 1).Value
ArrIndex = arrIndex + 1
End If
Next
Next
End Sub
For more speed, and to save the columns in the same order as Wanted Headers
'add
Dim ColHeaders as Variant
With Sheets("Orders")
Redim ColHeaders(1 to LastUsedColumn)
ColHeaders = Range(Cells(1,1), Cells(1, LastUsedColumn))
'Replace
For HeaderNum = 0 To ULimitWantedHeaders
For ColHeadersIndex = 0 To UBound(ColHeaders)
If ColHeaders(ColHeadersIndex) = WantedHeaders(HeaderNum) Then
arr(HeaderNum) = Cells(1, ColHeadersIndex + 1).Resize(Lrow, 1).Value
End If
Next
Next