如何在MS-Excel中基于“:”分割字符串?


58

我的excel栏充满了这样的词:

1.) ABC:DCF
2.) DCF:FED

我想基于“:”分割每个单词,并将结果放入相邻的列中,以使“ A:1”单元格中的“ ABC:DCF”变为“ B:1”单元格中的“ ABC”,而单元格“中的“ DCF” C:1“,以及每列中的对应值。这个怎么做?

Answers:


63

转到数据选项卡,然后转到文本到列选项。以后,选择“定界”选项,然后选择“其他”,然后放置所需的任何定界符。


80

文本到列将起作用。如果要保留原始值,另一种选择是使用公式:
B1中

=left(a1,find(":",a1)-1) 

在C1中

=mid(a1,find(":",a1)+1,len(a1))

2
即使使用其他解决方案,也可以保留原始值(您可以指定其他列来存储新值),但我更喜欢这种解决方案,因为它允许始终具有最新值(即,如果您修改A1, B1和C1将更新,但text-to-column选项不会更新)。
psychowood 2013年

这是一个绝妙的解决方案
jsg

26

如果可以使用VBA,则可以使用该Split()功能。这是您可以在单元格中使用的用户定义函数(UDF)。它根据您选择的字符进行拆分,并返回拆分列表的第n个元素。

请参阅如何在MS Office中添加VBA? 有关如何定义UDF的信息。

Function STR_SPLIT(str, sep, n) As String
    Dim V() As String
    V = Split(str, sep)
    STR_SPLIT = V(n - 1)
End Function

因此,您需要输入:

=STR_SPLIT(A1, ":", 1) // for the first half
=STR_SPLIT(A1, ":", 2) // for the second half

1
很好,不知道创建自己的公式是如此容易
罩衫2014年

1
这非常适合将URL分成其组成部分。
2015年

7

将其粘贴到B1并填充到右侧的列和向下的行中:

=TRIM(MID(SUBSTITUTE($A1,":",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

编辑:我以前发布过公式的本地化版本,其中“,”被替换为“;”。在美国版本的Excel中不起作用:

=TRIM(MID(SUBSTITUTE($A1;":";REPT(" ";999));COLUMNS($A:A)*999-998;999))


1
欢迎来到超级用户。您能在答案中加些句子来解释它的作用和作用吗?这将提高其教育价值。谢谢。
fixer1234 2013年

是的,当然。它执行与“数据”选项卡中的“文本到列”相同的操作,除了它不包含公式。您可以用其他定界符替换“:”,也可以从其他单元格引用定界符。
Hardi Uutma '16

Excel说,当您将其粘贴到单元格中时,这不是有效的公式。请检查并更新。
thilina R

嗨,蒂莉娜·R!感谢您的通知。我针对美国版本的Excel进行了调整。如果您现在对此有任何疑问或不清楚,请告诉我。
Hardi Uutma

非常好。到目前为止,唯一的答案是允许您处理尽可能多的分隔符,而无需创建自己的函数。
CWilson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.