所以我有一個表,它將包含除 B 列之外的最后一行的資料。(例如,列 A、C、D 等在第 40 行停止,但 B 可能在第 25 行停止)。我想以編程方式保持系列從 B 中資料的最后一個單元格開始,并自動填充到電子表格中的最后一行。(希望執行此操作的腳本能夠識別該系列,而不僅僅是將相同的資料復制到所有空單元格。當我手動執行此操作時,它可以作業。)我從這里開始了一些事情,但我不知道如何調出范圍從哪里開始這個系列。我在第 7 行“例外:未找到范圍”上收到錯誤訊息。

function fillDownFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sc = ss.getRange("B1:B").getValues();
var scr = sc.filter(String).length;
var lr = ss.getLastRow();
var fillDownRange = ss.getRange(scr,2,lr)
ss.getRange(scr).copyTo(fillDownRange);
}
uj5u.com熱心網友回復:
除了已經提供的答案之外,Apps Script 已經有一種autoFill()方法可以用來執行此操作。有了這個,你只需要定義一個源和一個目標范圍。這與選擇范圍并在角上手動向下拖動滑鼠相同。
function fillDownFunction() {
var ss= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var lastsheetrow = ss.getLastRow() //last row with data
//last row in the autofill range with data
var lastrangerow = ss.getRange("B1:B").getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow()
var sourcerange = ss.getRange(2, 2,lastrangerow-1) //in your screenshot, this would be B2:B6
var destinationrange = ss.getRange(2, 2, lastsheetrow-1) //This would be B2:B12
sourcerange.autoFill(destinationrange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES)
}
請注意,我跳過了標題行并將范圍長度偏移了 -1 以進行補償。這是因為自動填充邏輯使用整個范圍,因此它還會考慮“Item2”并每 6 行重復一次,如“Item3”、“Item4”等。在這種情況下是一個缺點,但如果您計劃在未來以更復雜的方式使用自動填充,可能會被證明是有用的。
uj5u.com熱心網友回復:
這是一種可以將最后一個填充值復制下來的方法。該函式獲取所有值,映射需要填充的行,然后將最后一個值復制到作業表的其余部分。
function fillDownFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var tab = ss.getActiveSheet();
var sc = tab.getDataRange().getValues();
var lastRow = sc.length;
var values = sc.map(function(r) { return r[1]; }).filter(i => i);
var lastFillRow = values.length;
var fillDownValue = values.slice(-1);
tab.getRange(lastFillRow 1, 2, lastRow - lastFillRow).setValue([fillDownValue]);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/486517.html
上一篇:按鈕中的GoogleSheetIMPORTHTML鏈接
下一篇:洗掉谷歌表格中的重復值
