Group columns of an Excel table and perform aggregation

In the Excel table below, there are multiple duplicate columns.


A

B

C

D

E

F

G

H



Alpha

Alpha

Beta

Beta

Alpha

Delta

Beta

1

A

0.56

0.1

0.55

0.74

0.38

0.02

0.44

2

B

0.06

0.32

0.22

0.55

0.9

0.7

0.38

3

C

0.16

0.08

0.63

0.9

0.7

0.78

0.2

4

D

0.8

0.92

0.03

0.57

0.48

0.52

0.28

5

E

0.47

0.21

0.81

0.4

0.68

0.8

0.13

6

F

0.39

0.19

0.76

0.88

0.69

0.81

0.81

We need to group the table by columns and sum values in each group.


A

B

C

D

10


Alpha

Beta

Delta

11

A

1.04

1.73

0.02

12

B

1.28

1.15

0.7

13

C

0.94

1.73

0.78

14

D

2.2

0.88

0.52

15

E

1.36

1.34

0.8

16

F

1.27

2.45

0.81

Use SPL XLL to get this done:

=spl("=E@2bp(E@bp(?).groups(#1;${(?.len()-1).(eval@s($[sum(#?)],#+1)).concat@c()}))",B1:H7)

Picture1png

E()function converts an Excel table to a two-layer sequence; @p option enables a transposition, @b means not converting the titles, and @2 represents a two-layer sequence. groups() performs grouping and sum; ${} treats a string as an expression to execute. eval@s() loops each string in a sequence to replace them and takes them as an expression to execute. concat@c concatenates members of the sequence using the comma.

Souce:https://stackoverflow.com/questions/78161587/return-a-two-dimensional-array-using-a-sum-product-formula-excel