Grouping with Adjacent Data
Example
There is an Excel file Book1.xlsx, and the data is as follows:
051000 |
55.74 |
055000 |
61.47 |
056000 |
44.53 |
062000 |
142.11 |
081000 |
142.11 |
088000 |
44.53 |
092000 |
52.89 |
095100 |
118.37 |
096500 |
354.8 |
096700 |
6.49 |
099100 |
44.53 |
102600 |
162.74 |
The task is to group records by the first column and sum the values in the second column. The grouping condition is: if the current record is not empty and the previous record is empty, meanwhile, the first two digits of the record before the previous record and the current record are different, a new group will be created. The calculation results are as follows:
051000 |
161.74 |
062000 |
142.11 |
081000 |
186.64 |
092000 |
577.08 |
102600 |
162.74 |
Write SPL script:
A |
|
1 |
=file("Book1.xlsx").xlsimport() |
2 |
=A1.group@i(if(#1 && #1[-1]==null && left(#1,2)!=left(#1[-2],2))) |
3 |
=A2.new(#1,round(~.sum(#2),2)) |
4 |
=file("result.xlsx").xlsexport@(A3) |
A1 Read the excel file
A2 Group records according to the condition (the current record is not empty and the previous record is empty, also, the first two digits of the record before the previous record are different from those of the current record)
A3 Calculate the sum of the values in the second column of each group, and the result keeps two decimal places. #1 represents the first value in the first column of each group
A4 Export the result to result.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/