Google sheets 下拉列表演绎

Google sheets 下拉列表演绎,google-sheets,filter,dropdown,Google Sheets,Filter,Dropdown,我有100名员工和50个下拉列表。我想在下拉列表中选择一些员工,但我想防止用户多次选择同一员工。 我想从可能的下拉答案中扣除所选员工。我怎样才能做到这一点 我试图筛选出被选中的员工,但对于那些被选中的员工来说,它显示了一个丑陋的警告标志 您可以在此处查看我的电子表格: 您可以使用简单的触发器自动执行此任务: 当用户更改值时,onEdit(e)触发器将自动运行 电子表格中任何单元格的编号[…] 它与以前的不完全相同,因为选定的值仍将显示在列表中。如果重复,它们将被删除 您应该做的唯一更改是从列D中

我有100名员工和50个下拉列表。我想在下拉列表中选择一些员工,但我想防止用户多次选择同一员工。 我想从可能的下拉答案中扣除所选员工。我怎样才能做到这一点

我试图筛选出被选中的员工,但对于那些被选中的员工来说,它显示了一个丑陋的警告标志

您可以在此处查看我的电子表格:

您可以使用简单的触发器自动执行此任务:

当用户更改值时,onEdit(e)触发器将自动运行 电子表格中任何单元格的编号[…]

它与以前的不完全相同,因为选定的值仍将显示在列表中。如果重复,它们将被删除

您应该做的唯一更改是从列D中删除当前数据验证,并使用列a中的值设置一个新的验证

function onEdit(event){

  if (event.range.getColumn() == 4){   //Run only if the edited cell is from column D

    var sheet = SpreadsheetApp.getActiveSheet();
    var selection = sheet.getRange("D2:D22").getValues(); 
    var editedRow = event.range.getRow(); //Gets the edited row

    for (var i = 0; i < selection.length; i++){ 

      //If some value from D is equal to the edited value but in a different Row (so it ignores the inputted value)
      if ((i + 2) != editedRow &&  selection[i][0] == event.value){ 

          sheet.getRange(event.range.getA1Notation()).setValue(""); //Change the new value to empty

      }

    }
  }
}
函数onEdit(事件){
如果(event.range.getColumn()==4){//仅当编辑的单元格来自列D时运行
var sheet=SpreadsheetApp.getActiveSheet();
var selection=sheet.getRange(“D2:D22”).getValues();
var editedRow=event.range.getRow();//获取已编辑的行
对于(var i=0;i
每次选择D列中的项目时,该函数都将运行

结果:

参考文献:


这是不可能的,因为数据验证规则将单元格值与C列进行比较,在C列中删除相同的值。您是否考虑过使用应用程序脚本执行此操作?最好的方法是使用条件格式来突出显示重复项-@Jescanellas尝试使用脚本执行此操作,但对我来说太复杂了。我如何使用应用程序脚本来完成它?非常感谢。这对我帮助很大!我真的很想查看一份未经挑选的员工名单,但现在就可以了。