代码错误以#DIV/0的形式弹出单元格!代码遍历所有单元格之后 [英] Code Error Pop Up inside cell as #DIV/0! after code runs through all cells

查看:64
本文介绍了代码错误以#DIV/0的形式弹出单元格!代码遍历所有单元格之后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究宏脚本,其中在工作表中也使用了财务公式

当第1行中的值不同时,我可以接收结果值,但是当第1列中有转置值时,我会收到错误消息.

请参见下面的代码,并随附两个屏幕截图

Please see the code below and attached two screenshots also

function MyFunction(){

  var sd = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('SD');
  var cr = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('CORRELATION');

  var lr = cr.getLastRow();//find last row 
  var lc = cr.getLastColumn();//find last column 

  var data = cr.getRange(1, 1, lr, lc).getValues();
  var data1 = sd.getRange(1, 1, 999,9999).getValues();

  var c = 2
  for ( var i = 1; i <= lc - 1; i++ ){
    var r = 2

    for ( var j = 1; j <= lr - 1; j++ ){

      //Logger.log(data[0][i] + " - " +data[j][0])
      sd.getRange("B1").setValue(data[0][i])
      sd.getRange("S1").setValue(data[j][0])
      cr.getRange(r, c).setValue(sd.getRange("H8").getValue())//error comes here
      r = r + 1
    }
    c = c+ 1
  }
  SpreadsheetApp.getActiveSpreadsheet().toast('Task Completed!', 'Status');
}

图片01 图片02

推荐答案

我猜想是您在工作表限制之外增加了列或行.从以下代码开始,然后重写您的函数:

I'm guessing that you incrementing your column or row outside of the limits of your sheet. Start with the following code and rewrite your function:

function MyFunction(){
  var ss=SpreadsheetApp.getActive();
  var sd=ss.getSheetByName('SD');
  var cr=ss.getSheetByName('CORRELATION');
  var data=cr.getRange(1, 1, cr.getLastRow(), cr.getLastColumn()).getValues();
  var data1=sd.getRange(1, 1, sd.getLastRow(),sd.getLastColumn()).getValues();
  for(var i=0;i<data.length;i++) { 
    for(var j=0;j<data[i].length;j++) {

    }
  }
}

这篇关于代码错误以#DIV/0的形式弹出单元格!代码遍历所有单元格之后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆