【问题标题】:Dropdown... recursive problem / dropdown without data validation possible?下拉...递归问题/没有数据验证的下拉可能?
【发布时间】:2020-02-12 06:19:39
【问题描述】:
我有 3 列:(示例)
- A 列:下拉元素
- B 列:“VIP”选择
- C 列:“普通用户”选择
B 列中的下拉列表仅包含 A 列的所有元素。
但是,C 列中的下拉菜单应该只包含 A 列的其余元素(=> 未在 B 或 C 中选择)
我能够通过创建一个列(我们称之为 D)来做到这一点,其中只添加了 A 列中但不在 B 列或 C 列中的元素,并在此 D 列上使用 C 列的数据验证。问题是,这是递归的……所以一旦我在 C 列中输入内容,它就会从 D 列中删除,并且在 C 列中不再有效(但对于这个单元格,它应该是)
所以我认为只有 3 个选项可以解决这个问题...
- 不要使用递归(但我不知道如何解决我的问题)
- 禁用数据验证中的警告(对我来说没问题,但据我所知不可能?)
- 在不使用数据验证的情况下创建下拉列表(不知道如何/是否可以)
我希望有人可以帮助我。
【问题讨论】:
标签:
validation
google-sheets
filter
dropdown
google-sheets-formula
【解决方案1】:
您可以使用 2 个侧栏来解决此问题,然后您可以将其隐藏。 E 列将提供 A1 和 B1 的下拉列表。然后列 F 将提供 C1 其中 F2 将包含:
=FILTER(E2:E, E2:E<>A1, E2:E<>B1)
【讨论】:
-
我不太了解您的解决方案。在您的示例中,A 列是我的“VIP”,而 C 列是我的“正常”,但 B 列是什么?如果我将其扩展到不止一行,它不会将第 1 行的输入删除到 C2 中。我快速制作了Example Sheet 我的工作表是什么样子的
【解决方案2】:
我找到了解决办法。
我使用以下公式为该行的所有剩余值(“C 列 - A 列 - B 列”)的每一行创建了一个过滤器,并简单地将 B 列中的值再次从该行添加到该过滤器的末尾。 (值为 E - M 列)
=IFERROR(TRANSPOSE({FILTER($D$3:$D$11, ISNA(MATCH($D$3:$D$11, $A$3:$A$11, 0)), ISNA(MATCH($D$3:$D$11, $B$3:$B$11, 0)));B3}),"")
B 列中的下拉菜单现在是 E 列 - M 列(结束列取决于您有多少可能的值)
(对于 B3,它将是 E3:M3),
(对于 B6,它将是 E6:M6),...
截图:https://i.stack.imgur.com/b9UVb.jpg(抱歉,我不允许发布图片。我希望链接仍然可用...)