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

如何在Google Sheets中用带OR非包含条件的QUERY函数导入数据

问题排查与解决方案

原公式错误说明

你原来的写法存在两处问题:

  • 筛选逻辑错误:原公式设置的是排除包含1d、1mo的行,与需求排除2d/3d/4d/1w/1mo的要求完全相反
  • 语法错误:Google Sheets QUERY函数的OR逻辑不能使用|符号,需要使用完整的OR关键字拼接多条件

公式解决方案

方案1:QUERY函数正确写法

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/19NCGzrWJTC21VrkdGFvqUPVQoYYeZhV8Z8dmzQxfX-8/edit?usp=sharing","1st data!A1:K200"),"WHERE NOT (Col8 CONTAINS '2d' OR Col8 CONTAINS '3d' OR Col8 CONTAINS '4d' OR Col8 CONTAINS '1w' OR Col8 CONTAINS '1mo')",1)

末尾的参数1表示识别数据源第一行作为表头,不会参与筛选逻辑。

方案2:FILTER+正则匹配(写法更简洁)

如果你的表格支持LET函数,可以用更简洁的写法,避免重复调用IMPORTRANGE:

=LET(
  source_data, IMPORTRANGE("https://docs.google.com/spreadsheets/d/19NCGzrWJTC21VrkdGFvqUPVQoYYeZhV8Z8dmzQxfX-8/edit?usp=sharing","1st data!A1:K200"),
  FILTER(source_data, NOT(REGEXMATCH(INDEX(source_data,,8), "2d|3d|4d|1w|1mo")))
)

如果不支持LET函数,直接拆分写法即可:

=FILTER(IMPORTRANGE("https://docs.google.com/spreadsheets/d/19NCGzrWJTC21VrkdGFvqUPVQoYYeZhV8Z8dmzQxfX-8/edit?usp=sharing","1st data!A1:K200"), NOT(REGEXMATCH(INDEX(IMPORTRANGE("https://docs.google.com/spreadsheets/d/19NCGzrWJTC21VrkdGFvqUPVQoYYeZhV8Z8dmzQxfX-8/edit?usp=sharing","1st data!A1:K200"),,8), "2d|3d|4d|1w|1mo")))

脚本解决方案(适合大数据量场景)

如果数据量较大,公式计算卡顿,可以用Google Apps Script定期同步筛选后的数据:

  1. 打开目标表格,点击「扩展程序 > Apps Script」进入编辑器
  2. 粘贴以下代码:
function syncFilteredData() {
  // 读取源表数据
  const sourceSS = SpreadsheetApp.openById("19NCGzrWJTC21VrkdGFvqUPVQoYYeZhV8Z8dmzQxfX-8");
  const sourceSheet = sourceSS.getSheetByName("1st data");
  const sourceData = sourceSheet.getRange("A1:K" + sourceSheet.getLastRow()).getValues();
  
  // 配置排除关键词
  const excludeList = ["2d", "3d", "4d", "1w", "1mo"];
  // 筛选符合要求的行
  const filtered = sourceData.filter(row => {
    const postVal = row[7] ? row[7].toString() : "";
    return !excludeList.some(key => postVal.includes(key));
  });
  
  // 写入目标表
  const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("2nd data");
  targetSheet.clearContents();
  targetSheet.getRange(1, 1, filtered.length, filtered[0].length).setValues(filtered);
}
  1. 首次运行完成授权后,还可以在编辑器的「触发器」页面设置定时运行,实现数据自动同步。

注意事项

首次使用IMPORTRANGE时,需要点击公式旁的「允许访问」按钮完成跨表权限授权,否则会返回权限错误。

内容的提问来源于stack exchange,提问作者S. Parka Sohapa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:04