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

Google Sheets提取@用户与#话题并跨表生成新行的技术咨询

解决方案:Google Sheets 拆分推文并自动同步到新表

嘿,这个需求我之前帮朋友处理过,刚好可以给你一套落地的方案,分「文本提取」和「自动同步新行」两步来实现:

第一步:在Sheet1提取@用户和#话题

假设你的原始推文存放在Sheet1的A列(A1是表头,A2开始是推文内容),我们可以用数组公式自动提取所有@用户和#话题到相邻列:

提取@用户标识(Sheet1的B列)

在Sheet1的B1单元格输入表头「@用户标识」,然后在B2单元格输入以下公式(新版Sheets直接回车,旧版需要按Ctrl+Shift+Enter触发数组公式):

=ARRAYFORMULA(IF(A2:A="", "", TEXTJOIN(", ", TRUE, IF(REGEXMATCH(SPLIT(A2:A, " "), "^@\w+"), REGEXEXTRACT(SPLIT(A2:A, " "), "^@\w+"), ""))))

这个公式的作用:

  • SPLIT(A2:A, " "):把每条推文按空格拆分成独立单词
  • REGEXMATCH(..., "^@\w+"):检查单词是否以@开头,且后面是字母/数字/下划线(避免包含标点)
  • TEXTJOIN(", ", TRUE, ...):把所有符合条件的@用户用逗号连接成一个字符串
  • ARRAYFORMULA:让公式自动应用到B列所有行,不用逐行复制

提取#话题标签(Sheet1的C列)

同样,在Sheet1的C1单元格输入表头「#话题标签」,然后在C2单元格输入:

=ARRAYFORMULA(IF(A2:A="", "", TEXTJOIN(", ", TRUE, IF(REGEXMATCH(SPLIT(A2:A, " "), "^#[\w\u4e00-\u9fa5]+"), REGEXEXTRACT(SPLIT(A2:A, " "), "^#[\w\u4e00-\u9fa5]+"), ""))))

这里把正则改成^#[\w\u4e00-\u9fa5]+,是为了同时支持英文和中文话题标签,如果你只需要英文,改成^#\w+即可。

第二步:自动同步到Sheet2并生成新行

接下来让Sheet2自动同步Sheet1的提取结果,且新增推文时自动生成新行:

  1. 打开Sheet2,在A1单元格输入表头「@用户标识」,B1输入「#话题标签」
  2. 在Sheet2的A2单元格输入以下公式:
=QUERY(Sheet1!A:C, "SELECT B, C WHERE A IS NOT NULL", 1)

这个公式的作用:

  • 从Sheet1的A-C列中,筛选出A列(原始推文)非空的行,提取对应的B(@用户)和C(#话题)列内容
  • 当Sheet1新增推文(A列新增非空行)时,Sheet2会自动追加新行,无需手动操作

示例演示

Sheet1输入内容:

推文内容(A列)@用户标识(B列)#话题标签(C列)
@JohnDoe 今天天气真好!#周末出游 #阳光明媚 @JaneSmith@JohnDoe, @JaneSmith#周末出游, #阳光明媚
#GoogleSheets 技巧分享 @TechBlog@TechBlog#GoogleSheets

Sheet2自动生成内容:

@用户标识#话题标签
@JohnDoe, @JaneSmith#周末出游, #阳光明媚
@TechBlog#GoogleSheets

额外注意事项

  • 如果推文里的@用户或#话题和标点连在一起(比如@JohnDoe!),上面的正则会自动忽略标点,只提取@JohnDoe
  • 如果你需要每个@用户/话题单独占一行(而不是用逗号连接),可以用FILTER+FLATTEN组合公式,比如提取@用户到单独行:
    =FLATTEN(FILTER(SPLIT(TEXTJOIN(" ", TRUE, Sheet1!A2:A), " "), REGEXMATCH(SPLIT(TEXTJOIN(" ", TRUE, Sheet1!A2:A), " "), "^@\w+")))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:00:21