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

如何在Google Sheets Apps Script中仅在奇数行搜索指定值

解决Google Sheets Apps Script仅在奇数行搜索值的问题

你可以通过两种方式实现仅在奇数行搜索目标值:

方法一:先构建奇数行范围集合再搜索

直接从指定区域提取所有奇数行的单元格范围,逐个用createTextFinder搜索,找到第一个匹配项后设置为当前单元格,从根源上避免偶数行的无效搜索:

const targetSheet = sh1;
const startRow = 3;
const lastRow = targetSheet.getLastRow();
const targetColumnCount = targetSheet.getLastColumn();
let foundRange = null;

// 遍历从第3行开始的所有奇数行(步长设为2)
for (let row = startRow; row <= lastRow; row += 2) {
  const currentRowRange = targetSheet.getRange(row, 1, 1, targetColumnCount);
  foundRange = currentRowRange.createTextFinder(folio)
    .matchEntireCell(true)
    .findNext();
  
  // 找到匹配项立刻终止循环
  if (foundRange) break;
}

// 找到结果则设置为当前单元格,未找到可按需处理
if (foundRange) {
  targetSheet.setCurrentCell(foundRange);
} else {
  console.log("未在奇数行找到目标值");
}

方法二:搜索后过滤奇数行

先在整个区域执行搜索,再判断找到的单元格是否属于奇数行,若为偶数行则继续查找下一个匹配项,直到找到符合要求的结果:

const searchRange = sh1.getRange(3, 1, sh1.getLastRow()-2, sh1.getLastColumn());
let foundRange = searchRange.createTextFinder(folio)
  .matchEntireCell(true)
  .findNext();

// 循环过滤偶数行的匹配结果
while (foundRange) {
  if (foundRange.getRow() % 2 !== 0) { // 校验是否为奇数行
    break;
  }
  // 从当前匹配项的下一个位置继续搜索
  foundRange = searchRange.createTextFinder(folio)
    .matchEntireCell(true)
    .findNext(foundRange);
}

// 设置当前单元格(找到结果的前提下)
if (foundRange) {
  sh1.setCurrentCell(foundRange);
} else {
  console.log("未在奇数行找到目标值");
}

两种方法的适用场景

  • 方法一适合行数较少的区域,直接限定搜索范围,执行效率更高;
  • 方法二更适配大区域搜索,无需提前构建大量独立范围,逻辑更简洁。

内容的提问来源于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 02:22:10