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

Google Sheets中如何实现SQL的CASE功能以生成预期的多列统计结果

Google Sheets中如何实现SQL的CASE功能以生成预期的多列统计结果

嗨,Angela!我明白你想在Google Sheets里实现类似SQL中CASE WHEN的多列统计需求——按行业分组,同时统计不同change区间的ticker数量对吧?之前试了QUERY和ARRAYFORMULA没得到预期的多列结果,下面给你两种实用的解决方法,应该能帮你搞定:

方法一:用QUERY函数模拟SQL的CASE统计

QUERY函数本身支持类SQL语法,你可以直接在聚合统计里加入条件判断,实现类似CASE WHEN的效果。假设你的行业列是A列,change列是B列,ticker列是C列,可以用下面的公式一次性生成所有统计列:

=QUERY(A:C, "SELECT A, 
COUNTIF(B, '>0'), 
COUNTIF(B, '<0'), 
COUNTIF(B, '=0') 
GROUP BY A 
LABEL A 'Industry', 
COUNTIF(B, '>0') 'Positive Change', 
COUNTIF(B, '<0') 'Negative Change', 
COUNTIF(B, '=0') 'No Change'", 1)

公式说明:

  • GROUP BY A:按行业列分组,和SQL里的逻辑完全一致
  • 每个COUNTIF(B, '条件')对应一个CASE场景,统计符合条件的ticker数量
  • LABEL用来给每一列设置自定义表头,最后一个参数1表示你的数据第一行是表头

方法二:用ARRAYFORMULA+COUNTIFS实现灵活统计

如果QUERY的语法限制了你,用ARRAYFORMULA搭配COUNTIFS可以实现更灵活的多条件分组统计,步骤如下:

  1. 提取唯一行业列表
    先获取所有不重复的行业值(假设数据从第2行开始):

    =UNIQUE(A2:A)
    
  2. 批量统计各行业的不同change情况
    把三个统计逻辑用ARRAYFORMULA批量生成结果,也可以直接合并成一个公式:

    =ARRAYFORMULA({
      UNIQUE(A2:A),
      COUNTIFS(A:A, UNIQUE(A2:A), B:B, ">0"),
      COUNTIFS(A:A, UNIQUE(A2:A), B:B, "<0"),
      COUNTIFS(A:A, UNIQUE(A2:A), B:B, "=0")
    })
    
  3. 添加表头(可选)
    如果需要带上完整表头,可以用HSTACK把表头和统计结果合并:

    =HSTACK(
      {"Industry", "Positive Change", "Negative Change", "No Change"},
      ARRAYFORMULA({
        UNIQUE(A2:A),
        COUNTIFS(A:A, UNIQUE(A2:A), B:B, ">0"),
        COUNTIFS(A:A, UNIQUE(A2:A), B:B, "<0"),
        COUNTIFS(A:A, UNIQUE(A2:A), B:B, "=0")
      })
    )
    

公式说明:

  • UNIQUE(A2:A):去重获取所有行业类别
  • COUNTIFS(A:A, 行业值, B:B, 条件):同时匹配行业和change条件,精准统计符合的ticker数量
  • 大括号{}用来组合多列数据,ARRAYFORMULA让公式批量作用于所有行业值

记得根据你实际的列位置调整公式里的列名(比如如果行业在D列,就把A换成D),这两种方法都能实现你想要的多列分组统计效果,选你觉得顺手的就行!

备注:内容来源于stack exchange,提问作者Angela Clark

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:23:10