程序
目标
限制
详情
我最初的计划是创建一个包含逗号分隔列表的单个单元格,然后将其用于创建数据验证列表。在成功创建格式良好的逗号分隔列表后,您似乎无法简单地引用该列表并通过数据验证工具进行翻译,现在我需要找到一种替代方法。
数据保存在一个长行(不是列,并且不能轻易地转换为列),这是通过对其上面的各种值求和而生成的。这意味着两个值之间可能存在大量空白 - 这是不可避免的。
以下网站有一个数组公式,可用于从列中删除空白单元格,但是我没有运气将其转换为适用于行的公式: http://www.cpearson.com/excel/NoBlanks.aspx
=IFERROR(INDEX(BlanksRange,SMALL((IF(LEN(BlanksRange),ROW(INDIRECT("1:"&ROWS(BlanksRange))))),ROW(A1)),1),"")
如果有人对连续工作有任何想法,我会很感激帮助。它似乎需要的不仅仅是用COLUMN()替换ROW()函数 - 可能与INDIRECT()上的“1:”有关,虽然我不明白公式是如何工作的。
在此期间我会继续玩它,当然如果有人对行数据或逗号分隔数据问题有任何其他NON-VBA解决方案,我都是耳朵。
编辑:为了澄清,上面的链接提供了一个解决方案,用于将一组垂直数据转换为水平结果通道,但这对我的水平数据集没有帮助。
答案 0 :(得分: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())),"")
我只假设数据如下:
Row1
中的数据并在Row2
中应用公式。
Row2
中的结果是Row1
中没有空格的数据。
<强> EDIT1:强>
我看到你需要它Data Validation List
&gt;
所以我认为这是你可能需要的:
使用这个公式:
=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)))),"")
希望这有帮助。
我只想猜你想要什么,但这应该会让你知道如何调整数组公式。