首页 > 解决方案 > Google 表格中的基本循环

问题描述

我正在尝试使用我在 Google 表格中的 excel 中制作的宏。这是我第一次使用它,我有点工作,但与 excel 相比似乎真的很慢。不知道发生了什么,让它变得如此缓慢。

我用一堆不同的方式弄乱了循环,但似乎仍然很慢。它应该只运行大约 20-50 次。

循环应该是:
当 A < B
然后 A = A+1

function loopscript() {  
    var app = SpreadsheetApp;  
    var activeSheet = app.getActiveSpreadsheet().getActiveSheet();  
    var num1 = activeSheet.getRange(3, 2).getValue();  
    var num2 = activeSheet.getRange(4, 10).getValue();  
    for(var i=1;num2 < num1;i++) {  
        var num3 = activeSheet.getRange(6, 2).setValue(i);  
        num2 = activeSheet.getRange(4, 10).getValue();  
    }  
}

标签: excelloopsgoogle-apps-scriptgoogle-sheets

解决方案


您没有设置单元格的值num2。每次循环运行时,它都会从 (4,10) 中获取它自己的值。你可以这样写:

      num2++;
      activeSheet.getRange(4, 10).setValue(num2);

另外,我建议您在循环外声明 num3 变量,不要每次都这样做:

      var num3;
      for(var i=1;num2 < num1;i++) {  
          num3 = activeSheet.getRange(6, 2).setValue(i);  
      ...

如果您只想在工作表中查看计数器,或者根本不声明它:activeSheet.getRange(6, 2).setValue(i);

您还可以考虑使用while循环:

      var i = 1;
      while (num2 < num1){
      num2++;
      ss.getRange(4, 10).setValue(num2);

      activeSheet.getRange(6, 2).setValue(i);
      i++;
      }

您也可以将 setvalue 放在循环之外,在num2和之后num1


推荐阅读