Excel - Dynamic list from delimited cell / remove blanks from dynamic row
程序
- Excel 2013
目标
- 使用数据验证的"列表"选项,从逗号分隔的列表中创建单元内下拉列表
- 使用数据验证的"列表"选项,从一个干净的没有任何空格的值行中,从一个不可避免地被空格污染的动态生成的行中创建一个单元内下拉列表
限制
- 没有VBA,宏或其他Malarkey-仅限公式
- 数据保存在一行中,而不是一列中。将数据转换为列会有些困难,我宁愿避免这样做
详细信息
我最初的计划是创建一个包含逗号分隔列表的单元格,然后将其用于创建数据验证列表。成功创建格式良好的逗号分隔列表后,似乎您不能简单地引用该列表并通过数据验证工具对其进行翻译,现在我需要找到另一种方法。
数据被保存在一个较长的行中(不是一列,并且不能轻松地转换为一列),该行是通过对数据上方的各种值求和而生成的。这意味着两个值之间可能有很多空白-这是不可避免的。
以下网站有一个数组公式,可用于从列中删除空白单元格,但是我没有运气将其转换为适用于行的公式:
http://www.cpearson.com/excel/NoBlanks.aspx
1 | =IFERROR(INDEX(BlanksRange,SMALL((IF(LEN(BlanksRange),ROW(INDIRECT("1:"&ROWS(BlanksRange))))),ROW(A1)),1),"") |
如果有人对连续进行这项工作有任何想法,我将非常感谢您的帮助。它似乎需要的不仅仅是用COLUMN()替换ROW()函数-可能与INDIRECT()上的" 1:"有关,尽管我不知道该公式的工作原理。
同时,我将继续使用它,当然,如果有人对行数据或逗号分隔数据问题有任何其他NON-VBA解决方案,那么我将不胜枚举。
编辑:为澄清起见,上面的链接提供了一种解决方案,用于将垂直数据集带入水平结果通道,但是这对我的水平数据集没有帮助。
这是您想要的吗?
1 | =IFERROR(INDEX($A$1:$E$1,1,SMALL(IF(LEN($A$1:$E$1)<>0,COLUMN($A$1:$E$1),9.9E+100),COLUMN())),"") |
我只是假设数据看起来像这样:
1 | =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)))),"") |
希望这会有所帮助。
我只是在猜测您想要什么,但这应该可以让您了解如何调整tha数组公式。