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

如何统计单元格区域字符串出现次数,多值单元格应用分数权重?

无需中间权重表的标签加权得分计算方案

需求背景

输入数据中部分单元格包含多个逗号分隔的标签(例如单元格内容为"A,B"),规则是单个单元格内有N个标签时,每个标签的权重为1/N,最终要计算每个标签的总加权得分。目前需要先通过COUNTA+SPLIT生成中间权重表,再用SUMIF计算结果,希望省去中间步骤直接得到最终得分。

实现公式

在空白单元格(比如用于输出结果的起始单元格)输入以下数组公式,根据Google Sheets版本执行:

  • 旧版:输入后按Ctrl+Shift+Enter确认
  • 新版:直接回车即可
=QUERY(FLATTEN(SPLIT(TEXTJOIN(",",TRUE,A2:A&"|"&1/COUNTA(SPLIT(A2:A,","))),",")),"select Col1, sum(Col2) where Col1 is not null group by Col1 label sum(Col2) '总得分'")

注:将公式中的A2:A替换成你实际的输入数据区域。

公式逻辑拆解

  1. 计算单标签权重:1/COUNTA(SPLIT(A2:A,",")) → 拆分单元格内的标签,统计数量后取倒数,得到每个标签的权重
  2. 关联标签与权重:A2:A&"|"&... → 把每个标签和对应的权重拼接成「标签|权重」的格式
  3. 合并并拆分:TEXTJOIN把所有拼接内容连成一串,再用SPLIT拆分成单个「标签|权重」项,FLATTEN将其转为单列结构
  4. 分组求和:QUERY函数拆分「标签|权重」,按标签分组求和,最终输出标签和对应的总得分

高可读性替代公式(新版Google Sheets适用)

用LET函数定义变量,逻辑更清晰:

=LET(
  inputRange,A2:A,
  splitTags,SPLIT(inputRange,","),
  tagWeights,1/COUNTA(splitTags,1),
  tagWeightPairs,HSTACK(FLATTEN(splitTags),FLATTEN(tagWeights)),
  QUERY(tagWeightPairs,"select Col1, sum(Col2) where Col1 is not null group by Col1 label sum(Col2) '总得分'")
)

同样替换inputRange为你的实际数据区域即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:23