【问题标题】:Google Sheet script getValues and when find the given value, replace the value of the above rowGoogle Sheet 脚本 getValues 并在找到给定值时,替换上一行的值
【发布时间】:2018-03-18 06:07:11
【问题描述】:

如何修改下面的脚本以读取列中的值,但只读取指定单元格的值:L9、L10 ... L18、L19 .... L27、L28 ....(两个通过两个跳八,到 L2000 列的末尾),当在其中一个单元格中找到值“1”时,将 4 行的值替换为“FALSE”?

例如如果单元格 L19 找到数字 1,则将单元格 L15 的值替换为单词“FALSE”……如果单元格 L28 找到数字 1,则将单元格 L24 的值替换为单词“FALSE”

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("ABC"); 
var lastrow = ss.getLastRow(); 
var range = ss.getRange(9, 12, lastrow - 1, 1); 
var data = range.getValues(); 
for (var i=0; i < data.length; i++) { 
  if (data[i][0] == "1") { 
    data[i][0] = "FALSE"; 
  } 
} 
range.setValues(data); 

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    在循环中添加另一个计数器:尝试修改

    发件人:

    var range = ss.getRange(9, 12, lastrow - 1, 1); 
    var data = range.getValues(); 
       for (var i=0; i < data.length; i++) { 
         if (data[i][0] == "1") { 
          data[i][0] = "FALSE"; 
        } 
       } 
    

    收件人:

    var range = ss.getRange(5, 12, lastrow+5, 1); 
    var data = range.getValues(); 
    var m= 0;
    for (var i=4; i < data.length; ) { 
      if (data[i][0] == "1") {
        data[i-4][0] = "FALSE";
      }
      m++;
      if (m == 2) {
        m=0; 
        i = i + 8;
      } else {
        i++;
      }
    }
    

    【讨论】:

    • 部分工作/没有工作。此脚本仅在列中找到第一个值“1”,但找到的值位于不应考虑的单元格中。我需要弄清楚如何仅为单元格 L9、L10 ... L18、L19 .... L27、L28 .... (二乘二跳八,到 L2000 列的末尾)分隔 getValues,然后,当在这些特定单元格之一中找到值“1”时,将上面 4 行的值替换为 FALSE。我在问题中添加了一个链接/示例。
    • 现在完美运行!非常感谢,你帮了我很多!干杯!
    【解决方案2】:

    我对循环应该变成什么的看法:

    var range = ss.getRange(9, 12, lastrow - 1, 1);
    var data = range.getValues();
    var i = 4,
        // Subtract 1 here because we compare both i and i+1 in the same loop body
        len = data.length - 1;
    while (i < len) {
      // Check the value of the first row in the subset.
      if (data[i][0] == 1) {
        data[i - 4][0] = "FALSE";
      }
      // Check the next row in the subset.
      if (data[++i][0] == 1) {
        data[i - 4][0] = "FALSE";
      }
      // Advance to the next subset.
      i += 8;
    }
    

    【讨论】:

    • 它不起作用,当我运行这个脚本时没有任何反应。我没有检查可能缺少的工作。尽管如此,还是非常感谢您的关注!疑点解决了。
    猜你喜欢
    • 2021-03-28
    • 2019-01-02
    • 1970-01-01
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-08
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多