我需要将两个相邻的列一起添加,然后在两列中的第一列中显示该值,清除第二列中的值,并在每次向第二列添加新数字时重复。如果这与一个按钮相关联,或者只是直接来自输入,我不介意。
我试过了:
function doTest() {
var ss = SpreadsheetApp.getActiveSheet();
var num1 = ss.getRange("D7:D116").getValue();
var num2 = ss.getRange("E7:E116").getValue();
ss.getRange("D7:D116").setValue(num1+num2);
ss.getRange("E7:E116").clearContent();
}
这是基本想法,但它只会将第一个和值打印到每个单元格中,而不是将公式应用到每个行值中。
我潜伏在一些类似的帖子上,但它们似乎是在不同的工作表或不同的工作簿中将数据从一列重新打印到另一列。 数组公式可能有效,但我使用了2列,我无法丢失值。
我看过的数组公式是
=ArrayFormula( IF( ROW( B:B ) < 1 , "" , IF( LEN( C:C ) * LEN( B:B ) , B:B + C:C & Clear C:C, IFERROR( 1/0 ) ) ) )
我从Stack Overflow中解决了这个问题,它第一次运行。但是,它需要3列,并且不会累积地添加值。我也不太了解数组/ java来修复它。
任何帮助都会很棒。我要求您为每个操作添加注释,以便我可以跟随任何脚本。
我正在处理的工作表示例=&gt;&gt;
https://docs.google.com/spreadsheets/d/1X1oGwWda8p0AJjAGxALZ1F5cJPzszqPxv6UnBlH0KwA/edit?usp=sharing
答案 0 :(得分:1)
getValues()
和setValues()
function doTest() {
//@OnlyCurrentDoc
var ss = SpreadsheetApp.getActiveSheet();
var rng = ss.getRange("D7:E116");
var val = rng.getValues(); //getRangeValues
//Loop over each row
for(row=0;row<val.length;row++) {
val[row][0] = val[row][0]+val[row][1];// Current row's First Column[0] value = first column+ second column
val[row][1] =''; //set Second Column value null
}
rng.setValues(val)
}