如何将两个相邻列添加到一起,然后在最左侧的列中显示新值

时间:2018-05-01 01:41:36

标签: google-apps-script google-sheets

我需要将两个相邻的列一起添加,然后在两列中的第一列中显示该值,清除第二列中的值,并在每次向第二列添加新数字时重复。如果这与一个按钮相关联,或者只是直接来自输入,我不介意。

我试过了:

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

1 个答案:

答案 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)
}