我有一个 Google 表格,其中每列代表一个不同的主题,每列包含 5 组,每组 5 行,概述了主题详细信息以及分配的名称和状态。
感谢 @rockinfreakshow 在 this 线程上的帮助,我使用以下公式从上到下搜索每一列,并在状态不是“完成”时显示指定名称的前 5 个匹配项的主题及其详细信息:
=INDEX(SPLIT(ARRAY_CONSTRAIN(TOCOL(IF(($C5:$I21=B32)*($C6:$I22<>"Complete"),$C2:$I2&"|"&$C3:$I19,),1,1),5,1),"|"))
但是,我现在想弄清楚的是如何按第 4、8、12、16 和 20 行中的优先级对这些数据进行排序。(如果没有优先级,则数据应按以下顺序出现)从上到下、从左到右的列,在具有优先级的数据之后。)这是我希望输出数据的顺序:
我尝试过使用 SORT,但我不确定如何将其指向优先级数据,因为这似乎是按数组第一行中的数据排序:
=INDEX(SORT(SPLIT(ARRAY_CONSTRAIN(TOCOL(IF(($C5:$I21=B32)*($C6:$I22<>"Complete"),$C2:$I2&"|"&$C3:$I19,),1,1),5,1),"|"),3,1))
我怎样才能最好地实现我正在寻找的目标?
创建一个自定义
filter_
函数,当输入 res
等于特定条件(例如 R
)时,它会给出所需的 n
ult dataRange
aBob
ge。
使用此
filter_
通过提供必要的 topics
来获取 priority
、details
和 OFFSET
。
以
SORTN
为基础,以 priority
结束。
=ARRAYFORMULA(LET(
dataRng, C3:E22,
cond, B24,
filter_,LAMBDA(resRng,TOCOL(IF(dataRng=cond,resRng,))),
topics, filter_(C2:E2),
priority, filter_(OFFSET(dataRng,-1,0)),
details, filter_(OFFSET(dataRng, -2,0)),
SORTN({topics,details, priority},5,2,3,1)
))