Excel – 从分隔的单元格dynamic列表/从dynamic行删除空白

程序

  • Excel 2013

目标

  • 使用数据validation的列表选项,从逗号分隔列表中创build一个内嵌下拉列表
  • 使用数据validation的List选项,从一个空白的行中创build一个没有任何空白的内联下拉列表,从一个dynamic生成的行中不可避免地被空白污染

限制

  • 没有VBA,macros或其他malarkey公式只
  • 数据保存在一行中,而不是一列。 将数据转换成列是有些困难的,我宁愿避免这样做

细节

我原来的计划是创build一个单元格,其中包含一个逗号分隔列表,然后将被用来创build一个数据validation列表。 在成功创build一个格式良好的逗号分隔列表之后,似乎不能简单地引用列表并通过数据validation工具进行翻译,现在我需要find另一种方法。

数据被保存在一个很长的行(不是一列,不能简单地翻译成一列),它是通过总结上面的各种值而产生的。 这意味着两个值之间可能有很多空白 – 这是不可避免的。

下面的网站有一个数组公式,用于从列中删除空白单元格,但我没有运气翻译成一个公式适用于一行: http : //www.cpearson.com/excel/NoBlanks.aspx

=IFERROR(INDEX(BlanksRange,SMALL((IF(LEN(BlanksRange),ROW(INDIRECT("1:"&ROWS(BlanksRange))))),ROW(A1)),1),"") 

如果任何人有任何想法,使这项工作连续,我会感激的帮助。 这似乎需要一点点,而不仅仅是用COLUMN()replaceROW()函数 – 可能与INDIRECT()中的“1:”有关,尽pipe我不明白这个公式是如何工作的。

与此同时,我会继续玩这个游戏,当然,如果有人有任何其他的非VBA解决scheme的行数据或逗号分隔的数据问题,我都耳熟能详。

编辑:为了澄清,有一个解决scheme提供的上面的链接垂直数据集到一个水平的结果通道,但是这不会帮助我的水平数据集。

这是你想要的吗?

 =IFERROR(INDEX($A$1:$E$1,1,SMALL(IF(LEN($A$1:$E$1)<>0,COLUMN($A$1:$E$1),9.9E+100),COLUMN())),"") 

我只是假设数据看起来像这样:
Row1数据并在Row1应用公式。

Row1结果将是Row1没有空白的数据。

EDIT1:

我看到你需要它的Data Validation List >
所以我认为这是你可能需要的:

并使用这个公式:

 =IFERROR(TRANSPOSE(INDEX($A$1:$E$1,1,SMALL(IF(LEN($A$1:$E$1)<>0,COLUMN($A$1:$E$1),9.9E+100),ROW(A1)))),"") 

希望这可以帮助。
我只是猜你想要什么,但这应该给你想法如何调整数组公式。