从谷歌脚本中的特定单元格自动向下拖动功能



我怎样才能自动使用谷歌脚本将单元格 Cx 中的公式向下拖动到 BAx。带有 X 的整个范围将替换为该代码。我只想把它拖到工作表的末尾。

function autofill(){
var ValuesFromC = ss.getRange("C1:C").getValues();
var LastRowFromC = ValuesFromC.filter(String).length;
LastRowFromC += 1
Logger.log(LastRowFromC);
var rangeToFill = "C" + LastRowFromC + ":BA" + LastRowFromC
ss.getRange(rangeToFill)

@ziganotschka编辑

我编辑了一点,得到了那种代码:

function autofill(){
var ValuesFromC = ss.getRange("C1:C").getValues();
var LastRowFromC = ValuesFromC.filter(String).length;
var LastRow = ss.getLastRow();
LastRowFromC += 1;
var rangeToFill = "C" + LastRowFromC + ":BA" + LastRowFromC;
var range = ss.getRange(rangeToFill);
range.copyValuesToRange(ss, 3, 53, LastRowFromC, LastRow) 

但它从范围内复制为每个值,但我想复制足以用于单元格的公式

您无法使用 Apps 脚本"拖动",但您可以使用您选择的范围填充任意尺寸范围。

为此,请使用方法 copyValuesToRange(sheet, column, columnEnd, 行,行结束(。

样本:

function autofill(){
var ss=SpreadsheetApp.getActive().getActiveSheet();
var LastRowFromC =ss.getLastRow() ;
var rangeC=ss.getRange("C1:C"+LastRowFromC)
var rangeToFill="D1:B"+LastRowFromC;
rangeC.copyValuesToRange(ss, 3, 53, 1, LastRowFromC);
}

如果只想复制公式

  • 将方法copyTo(destination, copyPasteType, transposed(与copyPasteTypePASTE_FORMULA一起使用。
  • 由于此方法要求 copyTo 范围具有与原始范围(C 列(相同的维度 - 在循环中逐个复制范围(相当于拖动列( - 利用方法偏移量

示例代码:

function autofill(){
var ss=SpreadsheetApp.getActive().getActiveSheet();
var LastRowFromC =ss.getLastRow() ;
var rangeC=ss.getRange("C1:C"+LastRowFromC);
for(var i=1;i<53;i++){  //53 correcponds to column BA
var rangeToFill=rangeC.offset(0,i);
rangeC.copyTo(rangeToFill, SpreadsheetApp.CopyPasteType.PASTE_FORMULA); 
}
}

最新更新