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

Google Sheets如何跨多工作表整合数据并按percent列排序

解决方案

可以使用QUERY结合数组合并的方式实现需求,直接在Ranks工作表的A1单元格输入以下公式:

={
  {"person", "value", "percent", "source"};
  QUERY({
    foo!A2:C, ARRAYFORMULA(REPT("foo", ROWS(foo!A2:A)));
    bar!A2:C, ARRAYFORMULA(REPT("bar", ROWS(bar!A2:A)));
    baz!A2:C, ARRAYFORMULA(REPT("baz", ROWS(baz!A2:A)))
  }, "SELECT Col1, Col2, Col3, Col4 WHERE Col1 IS NOT NULL ORDER BY Col3 DESC", 0)
}

公式说明:

  1. 数据合并:通过大括号{}将三个工作表的数据拼接在一起,每个数据集在原person/value/percent列基础上,用ARRAYFORMULA(REPT("工作表名", 行数))生成对应行数的来源标识列,确保每一行数据都能关联到原工作表。
  2. 筛选与排序:QUERY函数负责过滤空行(WHERE Col1 IS NOT NULL,排除无数据的空白行),并按percent列(对应Col3)降序排序;如果需要升序排序,去掉DESC即可。
  3. 自动生成表头:公式开头的{"person", "value", "percent", "source"}直接生成整合后的表头,无需手动添加。

替代简化写法(适合数据量不大的场景):

如果原工作表没有大量空白行,也可以用TOCOL+SORT的组合,写法更简洁:

=SORT(
  {
    foo!A2:C, TOCOL(REPT("foo", ROWS(foo!A2:A)),1);
    bar!A2:C, TOCOL(REPT("bar", ROWS(bar!A2:A)),1);
    baz!A2:C, TOCOL(REPT("baz", ROWS(baz!A2:A)),1)
  },
  3,
  FALSE
)

这里TOCOL(...,1)自动忽略空值,SORT的第三个参数FALSE表示降序排序,改为TRUE即为升序。

内容的提问来源于stack exchange,提问作者bismo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:22:19