#1 楼
使用以下代码将公式的值也复制为普通值。通过从电子表格菜单中选择“工具”来添加代码。然后选择脚本编辑器并添加代码。确保按下“错误”按钮并验证脚本。代码
// global
var ss = SpreadsheetApp.getActive();
function onOpen() {
var menu = [{name:"Add New Last Row", functionName:"addRow"}];
ss.addMenu("Extra", menu);
}
function addRow() {
var sh = ss.getActiveSheet(), lRow = sh.getLastRow();
var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
sh.insertRowsAfter(lRow, 1);
range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}
备注
设置仅对
false
的contentOnly将产生标准副本。将其设置为true
,将仅粘贴值。您发现的示例脚本比粘贴值做更多的工作..... ve为您创建了一个示例文件:使用公式的行添加
评论
稍作调整,这就是我的电子表格之一所需要的。谢谢。但是我没有从手机上使用它的方法,而这正是我最需要的地方:(
–维多利亚
20 Jan 5 '20 at 0:51
#2 楼
此ArrayFormula可以执行相同的操作而无需使用脚本。在D4中输入它,它将自动在它下面的任何空白单元格中保留。从B4开始直到单元格结束的单元格。
同时,ArrayFormula负责将自身复制到其下方的单元格中。只需确保其下方的单元格为空即可。
#3 楼
如果需要在顶部(第一行)添加新行并从第一行的顶部复制公式,则需要使用getFormulas()
和setFormulas()
函数复制公式。如果电子表格具有标题,则可以将firstRow
的值更改为2。function addFirstRow() {
var firstRow = 1;
var sh = ss.getActiveSheet();
var lCol = sh.getLastColumn();
var range = sh.getRange(firstRow, 1, 1, lCol);
var formulas = range.getFormulas();
sh.insertRowsAfter(1, 1);
newRange = sh.getRange(firstRow, 1, 1, lCol);
newRange.setFormulas(formulas);
}
评论
嗨,丹尼斯,您是指我创建的帖子吗?我只是检查了脚本,它仍在工作。问候雅各布·扬
–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
16年6月11日在9:46
嗨,@ JacobJanTuinstra,是的,您是对的。我实际上是在尝试在顶部添加新行,并保留同一行中的公式,但是它不起作用,因为脚本试图从新创建的空行中复制数据。我将更新我的答案以反映这一点。谢谢
– dgpro
16年6月13日在8:51
嗨@DenGordo!谢谢你如果我只有要移动的值而不是公式,该如何修改呢?谢谢!
–Drewdavid
17年2月24日在17:05
哦PS-我在哪里引用我正在处理的选项卡?再次感谢。
–Drewdavid
17年2月24日在17:06
#4 楼
为了解决此问题,我使用了setFormula(range)
,例如:var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange("B5");
cell.setFormula("=SUM(B3:B4)");
您的公式将相应地自动增加到行索引。可以添加onUpdate或onEdit触发器。
评论
-1;代码是如何产生的?您要添加一笔总和,但需要实际添加一行。 onUpdate触发器不存在。
–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
2014年6月4日4:31
评论
如果我以前的行公式为= HTTPResponse(C4),我如何复制相同的公式但为新行添加新的单元格编号?