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)))),"")
希望这可以帮助。
我只是猜你想要什么,但这应该给你想法如何调整数组公式。