Try this.
Letter set reordering example (3).ods (51.0 KB)
Data: $Source.$A$1:$F$145
DataBody: OFFSET($Source.$A$1;1;0;COUNTA($Source.$A:$A)-1;2)
Numbers: INDEX(DataBody;0;1)
OddNumbers: SPLITTEXT($'Odds & Evens'.$A$2)
EvenNumbers: SPLITTEXT($'Odds & Evens'.$J$2)
ColumnOffset: COLUMNS($'Odds & Evens'.$A:$I)
NOTE: Only ‘Data’ range must be specified.
$‘Odds & Evens’.$A$2: {=TEXTJOIN(" ";1;IF(ISODD(Numbers);Numbers;""))}
$‘Odds & Evens’.$J$2: {=TEXTJOIN(" ";1;IF(ISEVEN(Numbers);Numbers;""))}
$‘Odds & Evens’.A5:E5:{=VLOOKUP($A$1;Data;COLUMN();1)}
$‘Odds & Evens’.J5:N5:{=VLOOKUP($J$1;Data;COLUMN()-ColumnOffset;1)}
Macros
Function SplitText(s$, Optional sep$)
On Error GoTo Failed:
If IsMissing(sep) Then sep = " "
SplitText = Split(s, sep)
Rem Exit Function
Failed:
Rem SplitText = ":Failed:"
End Function
Sub Sheet_OnFocus()
''' Called by: OnFocus (Activate Document) event of ‘Odds & Evens’ sheet.
Call RefreshPivotTable
End Sub
Sub RefreshPivotTable()
''' Called by: Sheet_OnFocus
On Local Error GoTo HandleErrors
Dim oSheet As Object, oTables As Object, oTable As Object
oSheet = ThisComponent.Sheets.getByName("Odds & Evens")
oTables = oSheet.DataPilotTables
oTable = oTables(0) 'it is enough to refresh any one pivot table
oTable.refresh
Exit Sub
HandleErrors:
Msgbox "Error" & Err & ": " & Error _
, MB_ICONSTOP, "macro:RefreshPivotTable"
End Sub
Edit: File updated