在Google脚本中将值从一列复制到另一列

时间:2018-12-23 01:30:37

标签: google-apps-script google-sheets

我有一个数据表,可从Google表格中的一系列VLOOKUP中提取其信息。我一直在编辑更改数据表的源。我需要一个Google脚本代码,该代码将受公式影响的单元格复制到不会受到影响的另一列。我尝试一次复制所有内容以进行移动,但是第二次激活它时,现在空白的单元格覆盖了以前的功能,使我能够使用VBA成功完成此任务,但是我无法弄清楚过渡。这是我到目前为止的内容:

function CopyCells() {

var sheet2 = SpreadsheetApp.getActive().getSheetByName('Records');
var loc = sheet2.getRange("C2:C126").getValues();
var taget_sheet = sheet2.getRange("D2:D126");
for(i = 1;i == "Present";i++){ i.copyTo("target_sheet")}       
}

我的VBA代码:

 Dim ColERange As Range
 Dim ColFRange As Range 
 Set ColERange = Range("E1:E100") 
 Set ColFRange = Range("F1:F100") 
 Dim Cell As Range 
 For Each Cell In ColERange 
   If Cell.Value = "Present" 
     Then Cell.Offset(0, 1).Value = Cell.Value 
   ElseIf Cell.Value = "Absent" 
     Then Cell.Offset(0, 1).Value = Cell.Value 
   ElseIf Cell.Value = "" 
     Then Cell.Offset(0, 1).Value = Cell.Value 
   End If 
 Next Cell   

1 个答案:

答案 0 :(得分:0)

尝试一下:

/*
 Dim ColERange As Range
 Dim ColFRange As Range 
 Set ColERange = Range("E1:E100") 
 Set ColFRange = Range("F1:F100") 
 Dim Cell As Range 
 For Each Cell In ColERange 
   If Cell.Value = "Present" 
     Then Cell.Offset(0, 1).Value = Cell.Value 
   ElseIf Cell.Value = "Absent" 
     Then Cell.Offset(0, 1).Value = Cell.Value 
   ElseIf Cell.Value = "" 
     Then Cell.Offset(0, 1).Value = Cell.Value 
   End If 
 Next Cell   
*/    

我认为此版本是您想要的版本,因为只需更改一项,就可以更改要复制到的列。

function CopyCells1(col) {
  var col=col || 1;
  var sh=SpreadsheetApp.getActive().getSheetByName('Records');
  var rg1=sh.getRange("C2:C126");
  var vA=rg1.getValues();
  var rg2=rg1.offset(0, col);//Changing the column offset allows you to gain access to the other columns. Note: it can be negative.
  var vB=rg2.getValues();
  for(var i=0;i<vA.length;i++){
    if((vA[i][0]=='Present')||(vA[i][0]=='Absent')){
      vA[i][0]=vB[i][0];
    }
  }
  rg2.setValues(vB);
}