过滤掉低于其上方范围最大值的每个数字

filter out every number that is lower than the max value of a range above it

给定数字序列:

1
200
40
6000
117000
112000
34
90
180020
0
1320
24975
84
116
186
224
315070
10800
333333
266000

如何去除所有红细胞:

唯一的规则是,每个低于其上方范围最大值的数字都需要从数组中删除

到目前为止我得到了这个:

=ARRAYFORMULA(UNIQUE(QUERY(SPLIT(FLATTEN(ROW(A:A)&"×"&
 IF(ROW(A:A)>=TRANSPOSE(ROW(A:A)), TRANSPOSE(A:A), )), "×"), 
 "select max(Col2) group by Col1 label max(Col2)''")))

但我不喜欢它,因为它会随着更多数字变慢

假设您的原始值在 A2:A ...

=FILTER(A2:A,A2:A<>"",COUNTIFS(A2:A,">"&A2:A,ROW(A2:A),"<="&ROW(A2:A))=0)

简而言之:“Return 只有目标范围内的非空值,其中直到当前行的行中没有更高的值。”