Google Sheets中统计指定话题标签出现次数的最优函数咨询
Google Sheets话题标签出现次数统计解决方案
问题分析
你之前使用的函数无效,核心原因如下:
- 第一个函数仅匹配
#luxury字符串片段,会把#luxuryhouses、#luxurybathroom这类包含该片段的标签全部计入,无法精准统计完整标签的出现次数 - 第二个函数中的
SUM未做数组化处理,无法对U列的每个标签分别计算次数,只能返回单一结果
方法一:自动生成所有标签的去重列表+次数统计
用公式一次性提取所有有效标签(过滤空标签),并统计每个标签的总出现次数:
=QUERY(FLATTEN(SPLIT(TEXTJOIN(" ", TRUE, E2:E254), " ")), "SELECT Col1, COUNT(Col1) WHERE Col1 <> '' AND Col1 LIKE '#%' GROUP BY Col1 ORDER BY COUNT(Col1) DESC LABEL Col1 '话题标签', COUNT(Col1) '出现次数'")
公式拆解:
TEXTJOIN(" ", TRUE, E2:E254):将E列所有单元格的标签用空格拼接,自动忽略空单元格SPLIT(..., " "):按空格把拼接后的内容拆分为多列FLATTEN(...):把拆分后的多列转换为单列,避免单元格内拆分出多列的混乱QUERY(...):筛选出非空且以#开头的有效标签,分组统计次数,最后按次数降序排序并添加表头
方法二:针对已有标签列表(如U列)统计次数
如果U2:U已经列出了你需要统计的特定标签,用以下数组公式即可:
=ARRAYFORMULA(IF(U2:U="", "", COUNTIF(FLATTEN(SPLIT(TEXTJOIN(" ", TRUE, E2:E254), " ")), U2:U)))
注意:如果E列存在空白单元格,TEXTJOIN的TRUE参数会自动忽略;对于示例中出现的# #这类空标签,COUNTIF会自动跳过(因为U列的标签都是有效#开头的完整标签)
额外优化:清理无效空标签
如果需要先清理E列中的空标签(比如# #),可以在辅助列(如F列)用以下公式统一处理:
=ARRAYFORMULA(TRIM(SUBSTITUTE(SUBSTITUTE(E2:E254, " # ", " "), "##", "#")))
之后用F列替代上述公式中的E2:E254即可。
内容的提问来源于stack exchange,提问作者Social Maison Valentina
相关产品推荐
相关产品推荐

