【问题标题】:filter out every number that is lower than the max value of a range above it过滤掉每个低于其上方范围最大值的数字
【发布时间】:2022-01-07 21:06:59
【问题描述】:

给定数字序列:

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)''")))

但我不喜欢它,因为数字多了会变慢

【问题讨论】:

    标签: arrays google-sheets filter google-sheets-formula array-formulas


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-06-11
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 2021-09-06
      相关资源
      最近更新 更多