#44 - Group Rows And Combine Non-Null Values in Each of The Non-Grouping Columns

#44 - Group Rows And Combine Non-Null Values in Each of The Non-Grouping Columns

Problem description & analysis:

In the Excel table below, the 1st column is the category; columns from the 2nd to the 42nd are parallel columns of data items (below only shows some of the columns), where there are two types of values – X and null. Occasionally, there are duplicate values in a column under the same category.

A

B

C

D

E

1

ID

Criteria1

Criteria2

Criteria3

Criteria4

2

FirstValue

X

3

FirstValue

X

4

FirstValue

X

5

FirstValue

X

6

SecondValue

X

7

SecondValue

X

8

SecondValue

X

9

ThirdValue

X

10

ThirdValue

X

11

ThirdValue

X

Task: Group rows and combine values in each column in each group; only display one of the duplicate values if there are any.

A

B

C

D

E

13

ID

Criteria1

Criteria2

Criteria3

Criteria4

14

FirstValue

X

X

X

X

15

SecondValue

X

X

X

16

ThirdValue

X

X

Solution:

Use SPL XLL to do this:

=spl("=?.group(~1).(g=~,(r1=~1).(g.(~(r1.#)).ifn()))",A2:E11)

As shown in the picture below:

Picture1png

Explanation:

group()function groups data and computes data in each group. ifn() function returns the first non-null member in the sequence, and it returns null if each member of the sequence is null. ~ is the current group; ~1 represents the 1st row of the current group; and # is the ordinal number of the current member.