为了账号安全,请及时绑定邮箱和手机立即绑定

将单元格视为数组

将单元格视为数组

慕标5832272 2023-04-01 16:00:11
我有一些数据,我必须用它来创建一个 pdf。在原始数据的一个单元格中,有一个重量列表,例如 12.34kg、15.62kg、34.34kg。当我将它们写入另一张表以生成我的 pdf 时,我想将每个重量写入不同的单元格,一个在另一个单元格中,例如:单元格 C2 中的 12.34 千克,单元格 C3 中的 15.62 千克和单元格 C4 中的 34.34 千克。我正在努力完成这项任务......我正在尝试执行但不起作用,setValues 方法存在问题......function mySplit() {   var doc = SpreadsheetApp.getActive().getSheetByName("Sheet2");   var cell = String(doc.getRange("J21").getValues());   var array =[{}];   array = cell.split(",");   for (var j = 0; j<= array1.length; j++)  {     doc.getRange(21+j,10,1,1).setValues(array[0][j]);    } }
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

问题:

  • 在您的代码中,您使用getValues()获取单个元素的值。在这种特定情况下,您应该改用getValue() 。

  • 您不需要预定义array并且在您的代码中array1没有在任何地方定义。

  • String()也是多余和错误的,在这种情况下,单元格值默认为字符串。


解决方案:

鉴于它12.34kg,15.62kg,34.34kg位于单元格J21上,以下脚本将分别填充12.34kg,15.62kg和单元格J21J22J2334.34kg中:

function mySplit() { 

  

  var doc = SpreadsheetApp.getActive().getSheetByName("Sheet2"); 

  var cell = doc.getRange("J21").getValue();

  var array = cell.split(","); 

  

  for (var j = 0; j<= array.length; j++)

  {

    doc.getRange(21+j,10).setValue(array[j]);  

  } 


}


查看完整回答
反对 回复 2023-04-01
?
富国沪深

TA贡献1790条经验 获得超9个赞

虽然已经有解决您问题的答案,但不建议通过setValue(value)单独设置每个不同单元格的值,因为它效率低下。


在可能的情况下,建议使用批处理操作一次写入所有单元格:setValues(values)可用于该操作(对于getValue()and也是如此getValues())。


setValues(values)需要一个二维值数组,因此cell应将字符串转换为二维数组(其中外部数组指的是不同的行,内部数组元素指的是列)。您可以为此使用split()和map() :


function mySplit() {   

  var doc = SpreadsheetApp.getActive().getSheetByName("Sheet2"); 

  var cell = doc.getRange("J21").getValue();

  var array = cell.split(",").map(el => [el]);

  doc.getRange(21, 10, array.length, array[0].length).setValues(array);

}


查看完整回答
反对 回复 2023-04-01
  • 2 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信