Mar 20 2024 11:27 AM - edited Mar 20 2024 11:34 AM
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.
Mar 20 2024 01:05 PM
=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?
Mar 25 2024 10:43 AM
@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),"")))
Mar 25 2024 11:19 AM
=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.
Mar 25 2024 02:45 PM
Mar 25 2024 03:13 PM
=LET(ind,Table1[Index],
conc,Table1[Concat],
HSTACK(UNIQUE(ind),IFNA(DROP(REDUCE("",UNIQUE(ind),LAMBDA(u,v,VSTACK(u,TOROW(FILTER(conc,ind=v))))),1),"")))
Does this work? I forgot to replace the semi-colons with commas in my last reply.
Otherwise you can try the below formula which uses "abcdefg" instead of "ind". However i don't think that "ind" is an invalid name in the english version of Excel.
=LET(abcdefg,Table1[Index],
conc,Table1[Concat],
HSTACK(UNIQUE(abcdefg),IFNA(DROP(REDUCE("",UNIQUE(abcdefg),LAMBDA(u,v,VSTACK(u,TOROW(FILTER(conc,abcdefg=v))))),1),"")))
If it still doesn't work in your sheet can you attach a screenshot without sensitive data which shows all the relevant data just like in my screenshots?
Mar 26 2024 08:09 AM
SolutionMar 26 2024 08:09 AM
Solution