在Excel公式中模拟字符串拆分功能

a_m*_*m0d 25 excel formula excel-formula

我试图在excel公式中拆分字符串,就像我在许多编程语言中可以做的那样,例如

string words = "some text".split(' ');
Run Code Online (Sandbox Code Playgroud)

问题是我不能确定单元格中有多个单词.如果我尝试使用FIND()SEARCH()函数,#VALUE如果没有空格则返回.是否有任何简单的方法来分割字符串,以便它返回单个单词(甚至更好,以便它返回第一个单词或所有其他单词)?

Rob*_*rns 23

返回第一个单词所有其他单词的公式.

=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2)))
Run Code Online (Sandbox Code Playgroud)

例子和结果

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
Run Code Online (Sandbox Code Playgroud)

关于公式的评论:

  • TRIM函数是用来移除所有开头和结尾的空格.文本中的重复间距也会被删除.
  • 然后FIND函数找到第一个空格
  • 如果没有空格,则返回修剪的文本
  • 否则MID函数用于返回第一个空格后的任何文本

  • 为什么哦为什么不给Excel添加一些像样的字符串解析函数!?!? (2认同)

Rob*_*obS 9

当以空格分隔时,以下内容返回单元格A1中的第一个单词(在Excel 2003中有效):

=LEFT(A1, SEARCH(" ",A1,1))
Run Code Online (Sandbox Code Playgroud)

  • = LEFT(A1,SEARCH("",CONCATENATE(A1,""),1)) (3认同)

Jam*_*mes 9

=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
Run Code Online (Sandbox Code Playgroud)

这将首先检查单元格是否包含空格,如果是,它将返回空格中的第一个值,否则它将返回单元格值.

编辑

只是添加到上面的公式,因为它代表单元格中没有值它将返回0.如果您要显示一条消息或某些东西告诉用户它是空的,您可以使用以下内容:

=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3))
Run Code Online (Sandbox Code Playgroud)