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

Apps Script结合Google Sheets循环跨行列比较值的问题

Google Apps Script跨行列数据比较解决方案

原代码

function ArrayRowCheck() {
  
  // Find the last row in the array
  const ss = SpreadsheetApp.getActiveSpreadsheet()
  const sheet = ss.getSheetByName("15min");
  const lastRow = sheet.getRange("C2").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow().toFixed();
  const z = sheet.getRange("C2:G" + sheet.getLastRow())
  const a = z.getValues()
  
  for (let i = lastRow - 2; i >= 0; i--) {
 
      if (a[i][1] > a[i][4]) {
        console.log("True")
       
      }else {
        console.log("False")
      }
      
    }  
  }

问题描述

我需要在for循环中重复比较两行的第1列和第4列,但不知道如何在循环中引入上一行数据。

示例需求

  • 比较第10行第1列与第9行第4列
  • 接着,比较第9行第4列与第8行第1列
  • 然后,比较第8行第1列与第7行第4列
  • 以此类推直到没有可比较的行,需要能访问每行的第1列和第4列数据

修改后的代码

function ArrayRowCheck() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName("15min");
  
  // 修正lastRow的获取:去掉toFixed(),getRow()返回数字,无需转字符串
  const startCell = sheet.getRange("C2");
  const lastRow = startCell.getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow();
  // 取C2到G列最后一行的所有数据
  const dataRange = sheet.getRange(`C2:G${lastRow}`);
  const data = dataRange.getValues();
  
  // 至少需要两行数据才能进行跨行比较
  if (data.length < 2) {
    console.log("数据行数不足,无法进行比较");
    return;
  }
  
  let i = data.length - 1;
  while (i >= 1) {
    // 第一步:当前行第1列 vs 上一行第4列
    console.log(data[i][1] > data[i-1][4] ? "True" : "False");
    i--;
    if (i < 1) break;
    // 第二步:当前行第4列 vs 上一行第1列
    console.log(data[i][4] > data[i-1][1] ? "True" : "False");
    i--;
  }
}

代码说明

  1. 修正lastRow获取:移除toFixed(),因为getRow()返回的是数字类型,转成字符串会导致后续索引计算错误。
  2. 数据合法性判断:先检查数据行数是否≥2,避免无意义的循环。
  3. 循环逻辑调整:使用while循环实现交替比较逻辑:
    • 从最后一行(数组最大索引)开始,先比较当前行第1列与上一行第4列
    • 索引减1后,再比较当前行第4列与上一行第1列
    • 重复上述步骤直到索引不足1(无法再获取上一行数据)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:54:52