0

我有一个 Google Drive 电子表格,我试图在其中自动填充一个公式,因为用户通过附加到电子表格的网络表单提交数据。棘手的部分是我CONCATENATE已经使用了一个函数,将提交在几列上的数据连接到一个单元格中。

但是,要使该CONCATENATE功能正常工作,我必须将其“应用”到新提交的行。有没有办法在电子表格的行中自动填充这个公式?

我试图为其放置一个ArrayFormula函数,甚至设置 range (A1:A),但如果它可能喜欢这样的话,我找不到合适的语法。

功能如下:

=CONCATENATE(CHAR(10)&X14&V14&Y14&J14&" "&K14&" "&L14&M14&N14&O14&" "&P14&" "&Q14&R14&S14&CHAR(10)&T14&"."&CHAR(10)&U14&"."&CHAR(10)&W14&CHAR(10)&CHAR(10)&CHAR(10)&I14&CHAR(10)&Z14&" "&AA14&CHAR(10)&AB14&AC14&AD14&AE14&AF14&AG14&AH14&"."&CHAR(10)&AI14&AJ14)

任何建议将不胜感激。

4

1 回答 1

0

(由 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),以便从单元格中获取内容A2B2C2“连接”到ArrayFormula应用 的单元格中。最重要的问题是,通过使用此功能,当用户通过附加到电子表格的网络表单提交数据时,它会自动填充所有行。

于 2015-01-29T19:42:32.797 回答