(由 OP 在问题编辑中回答。转换为社区 wiki 答案。请参阅没有答案的问题,但问题在评论中解决(或在聊天中扩展))
OP写道:
我从 Google 电子表格的脚本库(AutoFormulas,由 tuxincarnate[@]gmail[dot]com)中找到了一个小脚本,它解决了这个问题!刚刚使用来自网络表单的十几个提交对其进行了测试,它按照它的承诺进行了测试,在应用的列中自动填充公式。
// Updates all rows except the last to have the same formulas as row 3 (allowing for a header and different row 2 formula)
// To activate this functionality, the last row in the column should have the value '(auto)'
function UpdateFormulas() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetCount = ss.getNumSheets();
for (var sheetIndex = 0; sheetIndex < sheetCount; ++sheetIndex) {
var sheet = ss.getSheets()[sheetIndex];
var rowCount = sheet.getMaxRows();
var columnCount = sheet.getMaxColumns();
if (rowCount < 5) continue;
for (var columnIndex = 1; columnIndex <= columnCount; ++columnIndex) {
if (sheet.getRange(rowCount, columnIndex).getValue() == '(auto)') {
var row3Range = sheet.getRange(3, columnIndex);
for (var rowIndex = 4; rowIndex < rowCount; ++rowIndex) {
if (sheet.getRange(rowIndex, columnIndex).isBlank()) {
row3Range.copyTo(sheet.getRange(rowIndex, columnIndex));
}
}
}
}
}
}
@大卫图写道:
虽然您已经有了解决方案,但您可能希望将来考虑以下公式,这是您最初寻找的(您不需要使用CONCATENATE
,因为您选择使用 & 符号连接在一起的列)
=arrayformula(CHAR(10)&X2:X&V2:V&Y2:Y&J2:J&" "&K2:K&" "&L2:L&M2:M&N2:N&O2:O&" "&P2:P&" "&Q2:Q&R2:R&S2:S&CHAR(10)&T2:T&"."&CHAR(10)&U2:U&"."&CHAR(10)&W2:W&CHAR(10)&CHAR(10)&CHAR(10)&I2:I&CHAR(10)&Z2:Z&" "&AA2:AA&CHAR(10)&AB2:AB&AC2:AC&AD2:AD&AE2:AE&AF2:AF&AG2:AG&AH2:AH&"."&CHAR(10)&AI2:AI&AJ2:AJ)
这应该在第二行
OP写道:
@DavidTew 向我展示了一个清晰而简单的方法来解决它。ArrayFormula 应该单独运行,告诉它将每一列的范围放在每一行中。像魅力一样工作。正确的语法是:=arrayformula(A2:A&B2:B&C2:C)
,以便从单元格中获取内容A2
,B2
并C2
“连接”到ArrayFormula
应用 的单元格中。最重要的问题是,通过使用此功能,当用户通过附加到电子表格的网络表单提交数据时,它会自动填充所有行。