自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本
Posted
技术标签:
【中文标题】自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本【英文标题】:AutoFill Formula (running across spreadsheet) - Google Sheets / Apps Script 【发布时间】:2021-05-13 05:44:53 【问题描述】:我想更改下面的代码以在整个页面中自动填充公式 - 而不是向下自动填充
您可以在下面的 2 张图片中看到,我可以将公式添加到 N527,但无法使用代码自动填充整个页面 - 这正是我正在寻找的。p>
所以图像是我想要完成的之前和之后
function LastColumn()
var spreadsheet = SpreadsheetApp.getActive();
var LastColumn = spreadsheet.getLastColumn();
//spreadsheet.setActiveSheet(spreadsheet.getSheetByName('MASTER'), true);
spreadsheet.getRange('N527').activate();
spreadsheet.getCurrentCell().setFormula('=sum(N497*N498*N499)/100/250');
var destinationRange = spreadsheet.getActiveRange().offset(0, 0, LastColumn -526);
spreadsheet.getRange("N527:BK527").copyTo(destinationRange);
我无法让附加的代码工作
我正在尝试将 N527 自动填充到 AK527 - 如果上面的单元格有数据。
提前致谢
【问题讨论】:
我无法理解IF THE CELL ABOVE HAS DATA.
。我为我糟糕的英语水平道歉。我可以问你目标的细节吗?
嗨 Tanaike - 如果上面的单元格(第 526 行)包含单词“carton”,则填写公式。所以第 527 行的 O 列应该有公式 spreadsheet.getCurrentCell().setFormula('=sum(O497*O498*)499)/100/250');等等等等
感谢您的回复。从你的回复中,我提出了一个答案。你能确认一下吗?如果这不是您期望的结果,我深表歉意。
【参考方案1】:
我相信你的目标如下。
你想把=sum(N497*N498*N499)/100/250
的公式从单元格“N527”放到列方向。
在这种情况下,当同一列的第526行的值为carton
时,您要输入公式。
您希望使用 Google Apps 脚本实现此目的。
在这种情况下,下面的示例脚本怎么样?
示例脚本:
function LastColumn()
var sheetName = "Sheet1"; // Please set the sheet name.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
var range = sheet.getRange('N526:526');
var ranges = range.getValues()[0].reduce((ar, r, i) =>
if (r.toLowerCase() == "carton") ar.push(range.offset(1, i, 1, 1).getA1Notation());
return ar;
, []);
sheet.getRangeList(ranges).setFormulaR1C1('=sum(R[-30]C[0]*R[-29]C[0]*R[-28]C[0])/100/250'); // This formula is like `=sum(N497*N498*N499)/100/250`.
在这种情况下,首先检查单元格“N526:526”是否具有carton
的值。并且,当单元格具有值时,将公式放入第 527 行。
我为此使用了 RangeList。
参考资料:
getRangeList(a1Notations) setFormulaR1C1(formula) of Class RangeList【讨论】:
【参考方案2】:您需要将已包含公式的单元格中的公式复制到要扩展的范围内
这意味着您的目标范围应该是“O527:BK527”。
示例:
function autoFill()
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName('MASTER');
var firstCell = sheet.getRange('N527');
firstCell.setFormula('=sum(N497*N498*N499)/100/250');
var destinationRange = sheet.getRange("O527:BK527");
firstCell.copyTo(destinationRange);
【讨论】:
谢谢ziganotschka - 如果上面的单元格包含数据,我只想填充该行 - 在这种情况下,“carton”可以找到最后一列数据。以上是关于自动填充公式(跨电子表格运行) - Google 表格/应用程序脚本的主要内容,如果未能解决你的问题,请参考以下文章
运行 ZAPIER ZAP 后 Google 表格中的自动填充单元格