Forum Discussion
Maybe an array formula to transpose records?
I have a table of data. Note that the number of rows per index can vary and the total number of unique index values will vary and not be named TestX:
Index | Concat |
Test1 | DataValue1 |
Test1 | DataValue2 |
Test1 | DataValue3 |
Test1 | DataValue4 |
Test1 | DataValue5 |
Test1 | DataValue6 |
Test1 | DataValue7 |
Test1 | DataValue8 |
Test1 | DataValue9 |
Test2 | DataValue10 |
Test2 | DataValue11 |
Test2 | DataValue12 |
Test2 | DataValue13 |
Test2 | DataValue14 |
Test2 | DataValue15 |
Test2 | DataValue16 |
Test2 | DataValue17 |
Test2 | DataValue18 |
Test2 | DataValue19 |
Test3 | DataValue20 |
Test3 | DataValue21 |
Test3 | DataValue22 |
Test3 | DataValue23 |
Test3 | DataValue24 |
Test3 | DataValue25 |
Test3 | DataValue26 |
Test3 | DataValue27 |
Test3 | DataValue28 |
Test3 | DataValue29 |
I would like to transpose the data so each index item shows the related data on one row:
Index | Concat | New Column1 | New Column2 | New Column3 | New Column4 | New Column5 | New Column6 | New Column7 | New Column8 | New Column9 | New Column10 | New Column11 |
Test1 | DataValue1 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue2 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue3 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue4 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue5 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue6 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue7 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue8 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue9 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test1 | DataValue10 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue11 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue12 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue13 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue14 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue15 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue16 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue17 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue18 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue19 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test2 | DataValue20 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test3 | DataValue21 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue22 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue23 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue24 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue25 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue26 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue27 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue28 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue29 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 | |
Test3 | DataValue30 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 |
Ultimately, I would like to filter it down to unique indexes, but I can do that myself:
Index | Concat | New Column1 | New Column2 | New Column3 | New Column4 | New Column5 | New Column6 | New Column7 | New Column8 | New Column9 | New Column10 | New Column11 |
Test1 | DataValue1 | DataValue1 | DataValue2 | DataValue3 | DataValue4 | DataValue5 | DataValue6 | DataValue7 | DataValue8 | DataValue9 | ||
Test2 | DataValue11 | DataValue10 | DataValue11 | DataValue12 | DataValue13 | DataValue14 | DataValue15 | DataValue16 | DataValue17 | DataValue18 | DataValue19 | DataValue20 |
Test3 | DataValue21 | DataValue21 | DataValue22 | DataValue23 | DataValue24 | DataValue25 | DataValue26 | DataValue27 | DataValue28 | DataValue29 | DataValue30 |
My question is can I do at least the column to row (second step/picture) conversion with a formula?
Thanks for any help you can provide.
- https://www.ablebits.com/office-addins-blog/textjoin-function-excel-merge-text-multiple-cells/#:~:text=The%20syntax%20of%20the%20TEXTJOIN,text%20value%20that%20you%20combine.
=TEXTJOIN(", ", TRUE, IF([Index]=[@Index], [Concat], ""))
7 Replies
- Jpey65Copper Contributorhttps://www.ablebits.com/office-addins-blog/textjoin-function-excel-merge-text-multiple-cells/#:~:text=The%20syntax%20of%20the%20TEXTJOIN,text%20value%20that%20you%20combine.
=TEXTJOIN(", ", TRUE, IF([Index]=[@Index], [Concat], ""))
- OliverScheurichGold Contributor
=LET(ind,A2:A34,
conc,B2:B34,
HSTACK(UNIQUE(ind),IFNA(DROP(REDUCE("",UNIQUE(ind),LAMBDA(u,v,VSTACK(u,TOROW(FILTER(conc,ind=v))))),1),"")))
Does this return the intended result?
- Jpey65Copper Contributor
OliverScheurich it does not work. It returns 0. As mentioned above the data is in a table, so I modified the formula:
=LET(ind,A2:A34,conc,B2:B34,HSTACK(UNIQUE(ind),IFNA(DROP(REDUCE("",UNIQUE(ind),LAMBDA(u,v,VSTACK(u,TOROW(FILTER(conc,ind=v))))),1),"")))
- OliverScheurichGold Contributor
=LET(ind;Tabelle4[Index];
conc;Tabelle4[Concat];
HSTACK(UNIQUE(ind);IFNA(DROP(REDUCE("";UNIQUE(ind);LAMBDA(u;v;VSTACK(u;TOROW(FILTER(conc;ind=v)))));1);"")))If you have a dynamic table you can apply this formula. In my example the name of the table is Tabelle4. In your worksheet you have to replace Tabelle4 with the name of your table.