索引匹配 Return 倒数第二个非数字条目

Index Match to Return Second To Last Non-Numerical Entry

我的团队每周必须在 google 表格中填写他们的日程安排,基本上我正在尝试这样做,如果他们 select “维护”,我可以自动拉他们的 last/previously 填写条目。

到目前为止我得到了这个: =if(D23="Maintain",(INDEX('Form Responses'!$E:$R,MATCH($C23,'Form Responses'!$B:$B)-1)),(INDEX('Form Responses'!$E:$R,MAX(IF('Form Responses'!$B:$B=C23,ROW(C:C)))))) 但“真实”部分不是 return 右行(有或没有“-1”)。

名称“JC”应该显示响应中第 32 行的数据 sheet,“NA”应该 return 第 40 行的数据。

“-1”应该 Index/Match 具有该特定名称的倒数第二个条目,但我无法判断它是否正常工作。

“真实”部分我做错了什么?

样本sheet: https://docs.google.com/spreadsheets/d/1FeYzXH3spqKqZAZWpKO0PFMdYuTjrtDoZIxlW50B-ns/edit#gid=1728521224

避免复制数据库的另一种解决方案。

提交新回复时,如果指定Maintain,此函数将检索相同Name 的最后回复并复制已输入的数据。这样做可以让你连续几天保持during。

// this function needs to be triggered
function onFormSubmit(e) {
  var responses = e.namedValues;
  var sheet = SpreadsheetApp.getActiveSheet();
  var row = sheet.getActiveRange().getRow();
  if (responses["Maintain/New"] == 'Maintain') {
    var data = sheet.getDataRange().getValues().filter(r => r[1] == responses["Name"]).sort(function (a, b) {
      return b[0] - a[0];
    });
    if (data.length > 1) {
      data = data.splice(1, 1).flat()
      data.splice(0, 3)
      sheet.getRange(row,4,1,data.length).setValues([data])
    }
  }
}

删除 E3:R 范围内的所有内容并在 E3 中使用:

=ARRAYFORMULA(IFNA(IF(D3:D="Maintain", 
 VLOOKUP(C3:C, QUERY(SORT('Form Responses'!B2:R, ROW('Form Responses'!B2:B), 0), 
 "where not Col2 = 'Maintain' and Col1 is not null", 0), COLUMN(D:Q), 0),
 VLOOKUP(C3:C, SORT('Form Responses'!B2:R, ROW('Form Responses'!B2:B), 0), COLUMN(D:Q), 0))))