You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets Reduce函数问题:套件工具排序异常求助

解决方案

修正后的公式

=LET(
  loc, B4,
  data, FILTER(DATABASE!F:K, DATABASE!L:L=loc),
  mainTools, FILTER(data, ISBLANK(data[Column6])),
  sortedMain, SORT(mainTools, 1, 1),
  result, REDUCE(TOCOL(,1), SEQUENCE(ROWS(sortedMain)), LAMBDA(a, i,
    LET(
      mainRow, INDEX(sortedMain, i,),
      mainID, INDEX(mainRow, 1),
      subTools, FILTER(data, data[Column6]=mainID),
      subSorted, SORT(subTools, 1, 1),
      kitHeader, IF(ROWS(subTools)>0, REGEXREPLACE(mainID, "^.*? - ", ""), ""),
      VSTACK(a, IF(ROWS(subTools)>0, kitHeader, ""), subSorted, IF(ROWS(subTools)=0, mainRow, ""))
    )
  )),
  FILTER(result, NOT(TOCOL(ISBLANK(result), 1)))
)

公式说明

  1. 变量封装:用LET简化逻辑,先筛选出当前位置(B4)对应的所有工具数据,包含工具信息与套件关联列
  2. 主工具排序:分离出不属于任何套件的主工具(K列空白),按工具ID(第1列)升序排序,确保整体顺序符合要求
  3. 批量处理主工具与套件:
    • 逐个读取排序后的主工具,筛选出隶属于该主工具的套件子工具
    • 对子工具按ID排序,生成去除前缀的套件标题
    • 按「套件标题→子工具」或「主工具」的结构堆叠内容
  4. 空行清理:过滤堆叠过程中产生的空行,输出整洁的结果

自定义调整

如果排序依据不是工具ID,而是其他字段(比如位置内的自定义排序号),只需修改SORT函数的第2参数为对应列的序号即可(例如按第2列排序,改为SORT(mainTools, 2, 1))

内容的提问来源于stack exchange,提问作者J-Drake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:17:40