【问题标题】:Excel Data validation drop down list from a cell单元格中的 Excel 数据验证下拉列表
【发布时间】:2020-07-22 08:52:45
【问题描述】:

我有点卡在这里。

在带有数据验证功能的 Excel 中,我们可以制作一个下拉列表并进行类似操作

但是如果“a、b、c、d”填充在一个单元格中呢?

是否可以从中引用列表?

假设我在A2 中有一个单元格包含使用=TEXTJOIN(",",TRUE,A1:D1) 的字符串列表,它将根据列表的需要填充“a、b、c、d”

如何/如何将 A2 单元格值读入数据验证的源字段?

PS:不,别告诉我我可以在源字段中使用=A1:D1,因为我引用的实际单元格分散在不同的工作表中

【问题讨论】:

  • 未测试,但可能使用 INDIRECT。无论如何,听起来有点难。
  • 也许您可以将源列表收集到一个可能隐藏的工作表中?与其试图直接解决一个难题,不如用一个更简单的问题来代替它。

标签: excel validation


【解决方案1】:

这可能,但有点复杂。您需要从值字符串构建 XML 字符串,然后过滤其元素。

在我的示例中,应出现在下拉列表中的所有值都在单元格 A2 中,以 , 分隔:

我们使用以下公式来拆分值:

=FILTERXML("<t><s>"&SUBSTITUTE(A2;",";"</s><s>")&"</s></t>";"//s")

工作原理

首先,我们使用SUBSTITUTE构建一个XML字符串(我们用XML标签替换,):

="<t><s>"&SUBSTITUTE(A2;",";"</s><s>")&"</s></t>"

这将导致以下结果:

<t><s>apples</s><s>pears</s><s>grapes</s><s>bananas</s></t>

使用FILTERXML,我们现在可以提取&lt;s&gt;元素之间的所有值

请注意,FILTERXML 会自动溢出A5 下方所需数量的单元格,因此请确保 A5 下方有足够的空间。

很遗憾,you cannot directly use this formula in the validation。但您可以在隐藏列或隐藏工作表中输入公式,然后使用溢出参考,如下所示:

=A5#

结果

【讨论】:

  • 您好,但是当我尝试使用语法复制您的示例时,它们都返回错误(例如:imgur.com/Lm4DF2Q)。上图中 A4 中的那个被替换为 =FILTERXML("" & SUBSTITUTE(A2, ",", "") & "", "//s") 代替,但它只返回一个单元格,而不是像你这样的单元格列表。尽管函数返回的结果与您显示的一样(imgur.com/Uf1dBWQ),但它只显示第一个单元格。您使用的是哪个版本的 Excel?我正在使用版本 1908 Build 11929.20776
  • @Willy_Sunny 您是否检查过是否必须使用;og , 作为参数分隔符?在第一张图片中,您使用分号,在第二张图片中,您使用逗号。 Excel 1908 是“一次性”购买而不是 Office 365 订阅,我是否正确?可能FILTERXML仅显示 Excel 2019 中的第一个值(因为动态数组不可用)。在这种情况下,您可以使用 xpath "//s[2]" 手动引用(例如)XML 字符串中的第二个元素。这样,您可以手动向下拖动公式。但这使解决方案更加复杂。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2016-10-09
  • 1970-01-01
  • 2013-03-18
相关资源
最近更新 更多