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

如何用SQL根据一列的特定数据筛选并生成新列?

在Google Sheets中自动化提取甜点/冰淇淋口味到新列

方法1:使用内置公式(快速实现)

基础场景:提取第一个单词

如果目标口味始终是单元格内容的第一个单词,用INDEX+SPLIT组合公式即可:

  • 单个单元格公式(B2单元格输入):
    =INDEX(SPLIT(A2," "),1)
    
  • 自动填充整列的数组公式(B2单元格输入,无需手动下拉):
    =ARRAYFORMULA(IF(A2:A="","",INDEX(SPLIT(A2:A," "),,1)))
    

进阶场景:匹配特定口味列表

如果需要严格匹配预设口味列表(避免提取无关词汇),先在表格空白区域(如D2:D4)列出所有目标口味:

D列(口味列表)
chocolate
strawberry
fruit

然后用REGEXEXTRACT+TEXTJOIN精准提取:

  • 单个单元格公式:
    =REGEXEXTRACT(A2, TEXTJOIN("|",TRUE,D2:D4))
    
  • 数组公式版:
    =ARRAYFORMULA(IF(A2:A="","",REGEXEXTRACT(A2:A, TEXTJOIN("|",TRUE,D2:D4))))
    

方法2:使用Apps Script(完全自动化,支持实时触发)

如果需要每次编辑A列时自动生成对应B列内容,可以用Google Apps Script实现:

  1. 打开你的Google表格,点击顶部菜单「扩展」>「Apps Script」
  2. 删除默认代码,粘贴以下脚本:
function onEdit(e) {
  const activeSheet = e.source.getActiveSheet();
  const editedRange = e.range;

  // 仅处理A列(第1列)的非表头行(假设表头在第1行)
  if (editedRange.getColumn() === 1 && editedRange.getRow() > 1) {
    const inputValue = editedRange.getValue().trim();
    const targetCell = activeSheet.getRange(editedRange.getRow(), 2);

    if (inputValue) {
      // 提取第一个单词作为口味,可根据需求修改逻辑
      const flavor = inputValue.split(' ')[0];
      targetCell.setValue(flavor);
    } else {
      targetCell.clearContent();
    }
  }
}
  1. 保存脚本(命名为FlavorExtractor即可),关闭脚本编辑器

自定义匹配逻辑(可选)

如果需要匹配预设口味列表而非仅提取第一个单词,修改脚本中的口味提取部分:

// 替换原flavor提取代码为:
const flavorList = ['chocolate', 'strawberry', 'fruit'];
const flavorRegex = new RegExp(`(${flavorList.join('|')})`, 'i'); // 忽略大小写
const matchResult = inputValue.match(flavorRegex);
const flavor = matchResult ? matchResult[1].toLowerCase() : '';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:06:39