1

因此,我正在运行一个程序,该程序对大型电子表格进行排序,并根据该行中单个单元格的属性将每一行组织到其他工作表中。我让宏工作了,但它非常慢,所以我返回并从头开始尝试使用块执行而不是重复读取和写入循环中的每个单元格来让它更快地工作。我在下面的 If 语句中遇到了问题。如果我正确解释了错误消息,则它不会读取二维数组的第二部分。我的代码是:

range = portSheet.getRange(2, 1, portSheet.getLastRow(), portSheet.getLastColumn());
  var cellValues = range.getValues();
  for (i = 0; i <= cellValues.length; i++){
    if (cellValues[i][7] == "Confirmed"){
      cellValues[i][7] = "X-Confirmed";      
    }
  }
  range.setValues(cellValues);

我收到的错误是

“TypeError:无法读取未定义的属性 '6'(第 20 行)”。

第20行,具体是:

if (cellValues[i][7] == "Confirmed"){

我添加了一些测试行以确保信息被正确读取和处理,并且我正在拉正确的单元格。看起来像这样:

range = portSheet.getRange(2, 1, portSheet.getLastRow(), portSheet.getLastColumn());
  var cellValues = range.getValues();
  range = sipSheet.getRange(2, 1);
  range.setValue(cellValues[0][6]);
  range = sipSheet.getRange(2, 2);
  range.setValue(cellValues[0][7]);
  for (i = 0; i <= cellValues.length; i++){
    if (cellValues[i][7] == "Confirmed"){
      cellValues[i][7] = "X-Confirmed";      
    }
  }
  range.setValues(cellValues);

在有问题的线路之前,它按预期运行。我用左边的一个细胞进行了测试,我打算用这个细胞来确保我正确地计数了细胞。单元格按预期打印测试行,所以我知道数组实际上是 7 列宽,并且值存在于 if 语句之前的数组中。

我已经花了几天时间研究这个,我在网上找不到任何与我的情况有关的东西。我对编码很陌生,所以这可能很明显,但我会很感激任何可用的指导。

4

0 回答 0