3.4.3找到满足的条件

在将数据分组时,有时并非按照数值相同处理,而是需要根据一些条件,如根据订单金额的范围,或员工的年龄段等来分组。

分组时的条件可以用一些字符串表示,如"?>3","[2,3,5,7].pos(?)>0"等。在一个条件表达式字符串构成的序列中,可以用penum函数来判断一个数满足第几个条件,如:

 

A

1

[?>=85,?>=70,?>=60]

2

=A1.penum(100)

3

=A1.penum(66)

4

=A1.penum(54)

A1中是一个由条件表达式构成的字符串序列:

A2A3中,各自计算出10066满足其中的第几个条件,计算结果如下:

 

从结果中可以看出,当某个数满足多个条件时,只会返回第一个满足条件的序号。如100实际上可以满足所有3个条件,但结果是1

A4表达式中的54无法满足任何一个条件,返回的结果是null

 

和对齐分组有些类似,在penum函数中也可以添加@n选项,在数据无法满足k个条件中的任何一个时,返回k+1。特别的,当条件表达式是空时,可以视为任何数据均可满足的条件。如:

 

A

1

[?>=85,?>=70,?>=60]

2

=A1.penum@n(54)

3

[?>=85,?>=70,?>=60,null]

4

=A3.penum(54)

A2A4中的结果如下:

 

其中,在A2中,54无法满足3个条件中的任何一个,使用了penum@n函数,返回4A4中,54可以满足第4个空条件。如果在枚举条件中使用null,要求必须将其放在最后1位。

 

penum函数中还可以添加@r选项,表示条件可重复。此时将返回数据可以满足的所有条件的序号构成的序列,如:

 

A

1

[?>=85,?>=70,?>=60,null]

2

=A1.penum@r(100)

3

=A1.penum@r(66)

4

=A1.penum@r(54)

A2,A3A4中分别返回100,6654满足条件的序号数列,结果如下:

   

值得注意的是,虽然null条件视为一定满足,但是用penum@r函数时,如果其它条件能被满足,null的条件对应的序号就不会出现在结果中。同时可以发现,在使用@r选项时,即使只满足1个条件,结果也会返回序列而不是数。