2 回答
TA贡献1946条经验 获得超3个赞
问题:
在您的代码中,您使用
getValues()
获取单个元素的值。在这种特定情况下,您应该改用getValue()
。您不需要预定义
array
并且在您的代码中array1
没有在任何地方定义。String()
也是多余和错误的,在这种情况下,单元格值默认为字符串。
解决方案:
鉴于它12.34kg,15.62kg,34.34kg
位于单元格J21上,以下脚本将分别填充12.34kg
,15.62kg
和单元格J21、J22和J2334.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]);
}
}
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);
}
添加回答
举报