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

如何在Google Apps Script中判断值是否处于两列数值区间内

Google Apps Script 实现页码匹配逻辑

这里提供两种实现方式,对应你的需求:

方式一:使用for循环(直观易读)

适合行数不多的场景,逻辑清晰,容易调试:

function getMatchingRow() {
  const folio = 48; // 目标页码
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("你的工作表名称"); // 替换为实际表名
  const dataRange = sheet.getDataRange();
  const data = dataRange.getValues(); // 获取所有行数据,二维数组格式

  let matchingRow = null; // 存储匹配到的行

  // 遍历每一行(从第2行开始,跳过表头,若没有表头则从索引0开始)
  for (let i = 1; i < data.length; i++) {
    const startPage = data[i][0]; // A列起始页码
    const endPage = data[i][1]; // B列结束页码
    if (folio >= startPage && folio <= endPage) {
      matchingRow = data[i]; // 匹配成功,保存整行数据
      break; // 如果只需要第一个匹配项,找到后跳出循环;若要所有匹配项,去掉break并改用数组收集
    }
  }

  // 后续逻辑:使用matchingRow处理
  if (matchingRow) {
    const targetValue = matchingRow[2]; // 获取C列对应值,和原公式返回结果一致
    console.log("匹配到的值:", targetValue);
    // 这里写你的后续处理代码
  } else {
    console.log("未找到匹配的页码区间");
  }
}

方式二:使用数组filter方法(简洁高效)

类似你原公式的数组处理逻辑,代码更紧凑:

function getMatchingRowWithFilter() {
  const folio = 48;
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("你的工作表名称");
  const data = sheet.getDataRange().getValues();

  // 跳过表头,筛选符合条件的行
  const matchingRows = data.slice(1).filter(row => {
    const startPage = row[0];
    const endPage = row[1];
    return folio >= startPage && folio <= endPage;
  });

  // 后续逻辑
  if (matchingRows.length > 0) {
    // 原公式返回第一个匹配项的C列值,这里取第一个匹配行的C列
    const targetValue = matchingRows[0][2];
    console.log("匹配到的值:", targetValue);
    // 若要处理所有匹配行,遍历matchingRows即可
  } else {
    console.log("未找到匹配的页码区间");
  }
}

注意事项

  • 替换代码中的"你的工作表名称"为实际的工作表名称
  • 如果你的数据没有表头,把slice(1)去掉,直接用data.filter(...)
  • 若需要返回所有匹配行,不要用break,改用数组收集所有符合条件的行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 20:32:41