在将数据分组时,有时并非按照数值相同处理,而是需要根据一些条件,如根据订单金额的范围,或员工的年龄段等来分组。
分组时的条件可以用一些字符串表示,如"?>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中是一个由条件表达式构成的字符串序列:
A2和A3中,各自计算出100和66满足其中的第几个条件,计算结果如下:
从结果中可以看出,当某个数满足多个条件时,只会返回第一个满足条件的序号。如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) |
A2和A4中的结果如下:
其中,在A2中,54无法满足3个条件中的任何一个,使用了penum@n函数,返回4。A4中,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,A3和A4中分别返回100,66和54满足条件的序号数列,结果如下:
值得注意的是,虽然null条件视为一定满足,但是用penum@r函数时,如果其它条件能被满足,null的条件对应的序号就不会出现在结果中。同时可以发现,在使用@r选项时,即使只满足1个条件,结果也会返回序列而不是数。