我想一个Excel公式来分割字符串,像我可以在许多编程语言做,如
string words = "some text".split(' ');
问题是,我不能肯定,有在小区多个单词。 如果我尝试使用FIND()
或SEARCH()
函数,它们将返回#VALUE
如果没有空间。 有没有简单的方法来分割字符串,使其返回单个单词(或者甚至更好,所以它要么返回的第一个字或全部换句话说 )?
我想一个Excel公式来分割字符串,像我可以在许多编程语言做,如
string words = "some text".split(' ');
问题是,我不能肯定,有在小区多个单词。 如果我尝试使用FIND()
或SEARCH()
函数,它们将返回#VALUE
如果没有空间。 有没有简单的方法来分割字符串,使其返回单个单词(或者甚至更好,所以它要么返回的第一个字或全部换句话说 )?
甲公式以返回所述第一字或所有其他字 。
=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2)))
实例和结果
Text Description Results
Blank
Space
some Text no space some
some text Text with space text
some Text with leading space some
some Text with trailing space some
some text some text Text with multiple spaces text some text
在公式编辑点评:
下面返回时用一个空格(工作在Excel 2003中)分离单元格A1的第一个字:
=LEFT(A1, SEARCH(" ",A1,1))
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
这将首先检查是否单元格中包含一个空间,如果这样做,就会从空间返回的第一个值,否则将返回单元格的值。
编辑
只需添加到上面的公式,因为它代表如果在单元格中没有值,它将返回0。如果您正在寻找显示一条消息或有事要告诉用户它是空的,你可以使用以下命令:
=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3))
这些东西往往如果你写他们小区的时间,打破了漫长的公式分成较小的,在那里你可以检查他们前进的道路上更加简单。 然后,您可以隐藏中间计算,或卷起他们都成一个单一的公式。
举例来说,以詹姆斯的公式:
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
这是只有在Excel 2007或更高版本有效。
打破它,如下所示:
B3: =FIND(" ", A3)
C3: =IF(ISERROR(B3),A3,LEFT(A3,B3-1))
这只是一个小更容易在时间上工作,一大块。 一旦完成,你可以把它变成
=IF(ISERROR(FIND(" ", A3)),A3,LEFT(A3,FIND(" ", A3)-1))
如果你愿意的话。
如果你需要分配到列只有一次的答案是MS Excel中的“文本分列”功能。
见MS帮助文章在这里: http://support.microsoft.com/kb/214261
HTH
突出单元,使用的DAT =>文本到列和分隔符是空间。 结果将出现在尽可能多的列分割找到空间。
一些伟大的工作福在其他的答案,但我认为他们忽视的是,你可以定义一个用户定义的函数(UDF)从纸面或公式调用它。
你有接下来的问题是,以决定是与整个数组或元件的作用。
例如,这UDF功能码
Public Function UdfSplit(ByVal sText As String, Optional ByVal sDelimiter As String = " ", Optional ByVal lIndex As Long = -1) As Variant
Dim vSplit As Variant
vSplit = VBA.Split(sText, sDelimiter)
If lIndex > -1 Then
UdfSplit = vSplit(lIndex)
Else
UdfSplit = vSplit
End If
End Function
允许与下面单元素在一个小区
=UdfSplit("EUR/USD","/",0)
或一个可以使用的细胞的块与
=UdfSplit("EUR/USD","/")