这是我的数据的简化版本。我想在灰色区域底部放置一个按钮,点击后,在底部上方插入一行新行。新行必须具有与其前面的行相同的公式。
我的真实公式非常复杂,因此我无法使用ArrayFormula来满足新行中的数据。
这是我的电子表格链接。
这是我的数据的简化版本。我想在灰色区域底部放置一个按钮,点击后,在底部上方插入一行新行。新行必须具有与其前面的行相同的公式。
我的真实公式非常复杂,因此我无法使用ArrayFormula来满足新行中的数据。
这是我的电子表格链接。
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Custom Menu')
.addItem('Insert New Row', 'insertRow')
.addToUi();
}
function insertRow() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var lastCol = sheet.getLastColumn();
//Exit function if current active sheet is not Sheet1
if(sheet.getName() != "Sheet1"){
return;
}
//insert new row
sheet.insertRowAfter(lastRow);
sheet.getRange(lastRow,2,1,3).copyTo(sheet.getRange(lastRow+1,2));
}
其中:
row
=您具有内容的最后一行
column
=要开始的列索引(在示例表格中为B列/索引2)
numRows
=应该为1(我们只想复制当前具有内容的最后一行)
numCols
=要选择的列数。在示例表格中,有3列(B-D列)
getRange(last row+1, 2)
如果您想使用放置在灰色行下面的按钮,请在分配脚本时使用insertRow
请确保具有内容的最后一行是具有公式的行。
如果您想在指定的工作表列表上使用该函数,可以将其添加到示例代码中。如果当前活动工作表名称不包含在有效工作表列表中,则会退出该函数
var validSheets = ["Sheet1", "Sheet2"];
if(!validSheets.includes(sheet.getName())){
return;
}
删除最后一条评论...然后点击新菜单:此脚本将在活动工作表中添加一行新内容
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('>> Action <<')
.addItem('Copy last row (formulas only)', 'copyLastRow')
.addToUi();
}
function copyLastRow() {
var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var rng=sh.getRange(sh.getLastRow(),1,1,sh.getLastColumn())
rng.copyTo(sh.getRange(sh.getLastRow()+1,1,1,sh.getLastColumn()), SpreadsheetApp.CopyPasteType.PASTE_FORMULA, false)
}