Google 表格 - 带有双下拉数据验证的简单 VLOOKUP

Google Sheets - Simple VLOOKUP with Double Drop Down Data Validation

我有一个结合数据验证和 VLOOKUP 的简单请求。

在我的 Pending 工作表上,当您 select 一个网站时 - 它应该在下一列中创建一个下拉列表,仅显示分配给该网站的电子邮件地址配置文件 工作表。最后,当您 select 新创建的下拉列表中的电子邮件时 - 下一列应显示分配给该电子邮件-网站组合的正确名称。

Here's 我的 Google Sheet:

这是一个脚本解决方案:

脚本:

function onEdit(e) {
  const src = e.source.getActiveSheet();
  const r = e.range;
  const column = r.getColumn();
  const row = r.getRow();
  // if non header in 'Pending' sheet is edited and the outcome has a value  
  if (src.getSheetName() == 'Pending' && row > 1 && e.value) {
    // get data as a whole
    var data = e.source.getSheetByName('Profiles').getDataRange().getValues();
    // if A2:A is edited
    if (column == 1) { 
      // filter 1st column using e.value, then return 2nd column
      var emails = data.filter(row => row[0] == e.value).map(row => row[1]);
      // set data (list) validation to colB
      r.offset(0, 1).setDataValidation(SpreadsheetApp.newDataValidation().requireValueInList(emails).build());
      // delete data in colB and colC
      src.getRange(row, column + 1, 1, 2).clearContent();
    }
    // if B2:B is edited
    else if (column == 2) {
      var colA = r.offset(0, -1).getValue();
      var colB = e.value;
      // only populate column C if both A and B has values
      if (colA && colB) {
        var name = data.filter(row => row[0] == colA && row[1] == colB)[0][2];
        // set value to colC
        r.offset(0, 1).setValue(name);
      }
    }
  }
}

新数据:

修改数据: