Google 表格 - 从下拉列表中删除使用过的项目

Google Sheets - Removing the used items from drop-down lists

在 Google 表格中,我有一列包含可用序列号的列表(例如,A 列)。 在其他地方(比如 B 列),用户必须从 A 列中列出的序列号中选择使用的序列号;我将数据验证与下拉列表一起使用,以防止用户使用不存在的序列号。

我的目标是通过从下拉列表中删除所有已使用的序列号,让用户仅选择剩余的可用序列号。

通过使用 FILTER 函数,结合 MATCH 和 ISNA,我能够创建可用序列号的列(例如,C 列)。使用的函数是: =FILTER(A2:A;ISNA(MATCH(A2:A;B2:B;0)))。 然后,我将 B 列(用户必须 select 使用的序列号)的数据验证列表从 A 列(所有序列号)移动到 C 列(过滤后的序列号)。我还在数据验证表单中添加了“拒绝输入”,这样我就可以只允许用户输入 C 列中列出的值。

有效,但之前在 B 列输入的所有序列号都有一个红色小三角,表明数据无效。当然,发生这种情况是因为所有输入的值都已从数据验证列表中删除。

我可以简单地忽略红色三角形,但我不太喜欢这个解决方案,因为它看起来总是 sheet 上有错误,当我们有很多数据时它会很难将此问题与其他问题区分开来。

是否有不同的解决方法?

谢谢

只有您可以使用的公式:

=TRANSPOSE(FILTER(A2:A, NOT(COUNTIF(C3:C4, A2:A)), A2:A<>""))

=TRANSPOSE(FILTER(A2:A, NOT(COUNTIF({C2; C4}, A2:A)), A2:A<>""))

=TRANSPOSE(FILTER(A2:A, NOT(COUNTIF(C2:C3, A2:A)), A2:A<>""))

然后隐藏列并使用验证:

这是结果:

demo sheet


更新:

第一个效果:

=TRANSPOSE(FILTER(A2:A, NOT(COUNTIF(C3:C4, A2:A)), A2:A<>""))

第 2 个和下一个 fx:

=TRANSPOSE(FILTER(A:A, NOT(COUNTIF({
 INDIRECT("C2:C"&ROW()-1); INDIRECT("C"&ROW()+1&":C")}, A:A)), A:A<>""))