我有一系列資料來自 - I3:I17
在宏中,我需要復制此范圍并將其粘貼到下一個可用列中。用于粘貼的專用空間從 N3 開始,然后持續 52 列,之后需要從 N3 重新開始。這是一年以上的每周平均支出。
在我記錄的宏中,它將范圍復制并粘貼到所需的(第一個)位置 N3,但是一旦我再次單擊命令按鈕,它就會重新粘貼到完全相同的位置,即覆寫原始粘貼。我需要下一次迭代將下一個可用單元格粘貼到右側。
這是我錄制 Marco 的代碼;
function Averagespendingcopy() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('N3').activate();
spreadsheet.getRange('I3:I17').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
如果有幫助,我還附上了一個電子表格鏈接:
https://docs.google.com/spreadsheets/d/1o_-vRKTzwQKMpypCp7OxgNbAnVVAYMueFCoozfqK41M/edit?usp=sharing
uj5u.com熱心網友回復:
我相信你的目標如下。
- 在活動作業表上,您希望在“N”列之后復制“I3:I17”中的值。
- 例如,將“I3:I17”的值復制到單元格“N3”后,再次運行腳本時,您希望將“I3:I17”的值復制到單元格“O3”。
- 當“N”到“BM”列不為空時,您想再次將“I3:I17”的值復制到單元格“N3”。
不幸的是,在您的腳本中,“I3:I17”的值總是被復制到單元格“N3”中。
為了實作您的目標,下面的示例腳本怎么樣?
示例腳本:
function myFunction() {
var start = 14; // Column "N"
var end = 66; // Column "BM"
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange(3, start, 15, end - start);
var values = range.getValues();
var idx = values[0].map((_, c) => values.map(r => r[c])).findIndex(r => r.join("") == "");
var col = idx == -1 ? start : idx start;
// if (idx == -1) range.clearContent();
sheet.getRange('I3:I17').copyTo(sheet.getRange(3, col), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
運行此腳本時,在運行腳本時,將搜索列“N”之后的第一個空行,并將“I3:I17”的值放入搜索列。并且,當“N”到“BM”列不為空時,當腳本運行時,“I3:I17”的值被復制到單元格“N3”中。
- 在此示例中,搜索每列的 14 行。當這 14 行為空時,該列將用作目標列。
當“N”到“BM”列不為空時,當腳本運行時,“I3:I17”的值被復制到單元格“N3”中。那時,當您想清除“N”到“BM”列時,請使用
if (idx == -1) range.clearContent();。在此當前腳本中,未清除單元格。
參考:
- 查找索引()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/512528.html
標籤:谷歌应用脚本谷歌表格
