异常:数据中的列数与范围内的列数不匹配

Posted

技术标签:

【中文标题】异常:数据中的列数与范围内的列数不匹配【英文标题】:Exception: The number of columns in the data does not match the number of columns in the range 【发布时间】:2020-06-28 13:41:05 【问题描述】:

您好,我正在努力解决我正在尝试做的事情的语法和功能。我循环了一个值列表并运行了一个耗时超过 5 分钟的数据库操作,因此我跟踪列表中的哪些值被插入到 B 列中。但是脚本第一次运行时没有 B 列,这似乎混淆了最后一个写回数组时的语句。

所以我认为问题在于创建一维数组,然后添加一列,然后尝试将其写回为两列数组。

我取出数据库代码只显示问题代码。

    const LISTRANGE=LISTSHEET.getDataRange(); //get all the values just column A is populated
    var LISTARRAY=LISTRANGE.getValues(); // push them into an array
    for (var i = 0; i < NEXTRUN ; i++)  // loop the array
      LISTARRAY[NEXTRUN][1] = "INSERTED"
    
    LISTSHEET.getRange(1,1,LISTARRAY.length,2).setValues(LISTARRAY);

这段代码以结果结尾

。数据有 1,但范围有 2。(第 76 行,文件“宏”)

我想也许我只需要选择 1 列,因为数组开始是一维的,但是它给出了这个错误

    LISTSHEET.getRange(1,1,LISTARRAY.length,1).setValues(LISTARRAY);

。数据有 2,但范围有 1。(第 76 行,文件“宏”)

您能帮我制定一个修改此代码以避免错误的策略吗?我不介意另一种方法,我只是试图将处理保留在缓存中,因此我不会在每次循环迭代时写入工作表。

【问题讨论】:

NEXTRUN 未定义 【参考方案1】:

试试这个:

const LISTRANGE=LISTSHEET.getRange(1,1,LISTSHEET.getLastRow(),2);
var LISTARRAY=LISTRANGE.getValues(); 
for (var i=0;i<LISTARRAY.length;i++) 
  LISTARRAY[i][1] = "INSERTED"

LISTSHEET.getRange(1,1,LISTARRAY.length,LISTARRAY[0].length).setValues(LISTARRAY);

【讨论】:

谢谢@cooper,你是天才 @ScottFitzpatrick 请阅读What should I do when someone answers my question?

以上是关于异常:数据中的列数与范围内的列数不匹配的主要内容,如果未能解决你的问题,请参考以下文章

Union All 的列数不匹配

多网格中的列数不起作用!反应虚拟化

PHP ~ 列数与第 1 行的值数不匹配

PHP ~ 列数与第 1 行的值数不匹配

JAVA使用POI获取Excel的列数与行数

java 操作Excel,循环每一行的列,为啥列数不相同呢。