“移动”&引用;使用Excel公式将值分隔到下一行
了解如何显示单元格A1中的值:“移动”&引用;使用Excel公式将值分隔到下一行,excel,excel-formula,Excel,Excel Formula,了解如何显示单元格A1中的值: English; German; French; Spanish; Finnish; Russian 用这种方式使用Excel公式 A2 English A3 German A4 French A5 Spanish A6 Finnish A7 Russian 把这个放在A2里,然后抄下来: =TRIM(MID(SUBSTITUTE($A$1,";",REPT(" ",999)),(ROW(1:1)-1)*999+1
English; German; French; Spanish; Finnish; Russian
用这种方式使用Excel公式
A2 English
A3 German
A4 French
A5 Spanish
A6 Finnish
A7 Russian
把这个放在A2里,然后抄下来:
=TRIM(MID(SUBSTITUTE($A$1,";",REPT(" ",999)),(ROW(1:1)-1)*999+1,999))
行(1:1)
只是一个计数器,对于第一个单元格,无论公式放置在何处或参考单元格,都应始终为1:1
。它将移动到2:2
,然后3:3
,因为它会自动向下复制。这是公式知道返回哪个的方式
发布动态数组公式后(目前仅限办公室内部人员使用),我们可以使用顺序代替行,只需将公式放置在第一个单元格中,无需向下复制,Excel将填充其余单元格:
=TRIM(MID(SUBSTITUTE(A1,";",REPT(" ",999)),SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1,";",""))+1,,0)*999+1,999))
为了缩短公式,我们可以使用一个简单的UDF,使用
Split()
返回一个值数组:
然后是一个简单的指数公式:
=INDEX(MYSPLIT($A$1,";"),ROW(1:1))
然后抄下来
或者在释放动态阵列时:
=TRASPOSE(MYSPLIT($A$1,";"))
仅在第一个单元格中。从Excel 2013开始,您可以使用。您可以将此公式放入
A2
:
=INDEX(FILTERXML("<t><s>"&SUBSTITUTE($A$1,"; ","</s><s>")&"</s></t>","//s"),ROW(A1))
=索引(FILTERXML(“&SUBSTITUTE($1,”;“,”)&“//s”),第(A1)行)
向下拖动
但是,另一个答案是较少键入=)假设输入A1:
English; German; French; Spanish; Finnish; Russian
然后,复制A1
并粘贴到A2
选择A2>>Ctrl+H>>查找内容:输入:“;
”(不带引号)>>替换为:(保留空白)>>按“全部替换”>>关闭
A2变成:
English German French Spanish Finnish Russian
将列A宽度减小为宽:8.00
(61像素)
选择A2
>编辑
>填充
,选择调整
>确定>>完成
最终成为:
A2 English
A3 German
A4 French
A5 Spanish
A6 Finnish
A7 Russian
仅供参考,如果您使用的是Excel 2010 Professional Plus或更高版本的Excel,您可以使用Power Query来解决此问题(但是,如果您只处理一个单元格或少量数据,这种方法可能会有过大的杀伤力) 首先,将数据加载到电源查询编辑器中 其次,突出显示相关列,使用
Transform
选项卡下的splitcolumns功能,按分号分隔值编码>,然后在高级设置中选择将结果放入行中。那么你应该有想要的列表
最后关闭并将输出加载到新工作表(默认情况下)
如果你有任何问题,请告诉我。干杯:)在引入新的动态数组公式时,将=INDEX(FILTERXML(“&SUBSTITUTE($A$1,”;“,”)&“/s”),0)
放在第一个单元格中返回整个列表,无需向下复制,现在比我的列表短。:)伟大的解决方案,以及!正如问题所说——如何用公式来做。想象一下你的excel工具被不同的人使用了1000次。使用解决方案执行所有这些操作会浪费多少时间?
A2 English
A3 German
A4 French
A5 Spanish
A6 Finnish
A7 Russian