Expand multiple columns horizontally
Example
The Excel file book1.xlsx stores a variety of parts and their metal subparts in an orderly manner. When Level=2, it means that the row is a part(summary row), and when Level=3, it means that the row is a sub-part. The Material column and the Proportion column respectively store the metal name and proportion of the sub-parts. As follows:
Put the percentage of each metal on the right side of the part (summary row), as shown below:
Write SPL script:
A |
|
1 |
=T("e:/work/book1.xlsx") |
2 |
=A1.id(Material).select(~) |
3 |
=A1.derive(${A2.string()}) |
4 |
=A3.group@i(Level==2) |
5 |
=A4.run(~.to(2,).groups(Material;sum(Proportion):value).run(A4.~(1).field(Material,value))) |
6 |
=T("e:/work/book2.xlsx",A3) |
A1 Read in book1.xlsx file data
A2 Select the material type that is not repeated and not empty
A3 Add one column for each material selected in A2
A4 Group A3, and when Level is 2, add a new group. Option @i means to add a new group when the condition is met
A5 Loop each group of A4, and use the second to last record to calculate the sum of the proportions of each material grouped by Material and name it the value column. Loop each group, and assign the value of the Material field of the first record of the current group in A4 to value
A6 Save the results in A3 to the file book2.xlsx
SPL Official Website 👉 https://www.scudata.com
SPL Feedback and Help 👉 https://www.reddit.com/r/esProc_Desktop/
SPL Learning Material 👉 https://c.scudata.com
Discord 👉 https://discord.gg/cFTcUNs7
Youtube 👉 https://www.youtube.com/@esProcDesktop
Linkedin Group 👉 https://www.linkedin.com/groups/14419406/