我试图使用Excel中的一个公式来用逗号分隔单元格中的一串单词。如果牢房里有超过5个单词,我只想得到前5个单词。要获取单元格中的前五个单词并用逗号分隔它们,我使用以下方法:
=SUBSTITUTE(LEFT(A1,FIND("^",SUBSTITUTE(A1," ","^",5))-1), " ", ", ")这个很好用。但是这个问题,因为这里的数字5,如果一个单元格包含少于5个单词,我会得到一个错误。我试着用这个代替5:
LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1所以我的职能是:
=SUBSTITUTE(LEFT(A1,FIND("^",SUBSTITUTE(A1," ","^",LEN(TRIM(A1))-LEN(SUBSTITUTE(A1," ",""))+1))-1), " ", ", ")但这不起作用,它给了我一个错误。你知道我该怎么做吗?
另外,如果第一个字符是"-“(没有引号),我想忽略第一个单词,而只是从第二个单词开始。换句话说,我想要这样的东西:
我很爱我的生活,应该还我,爱,我的,生活,很
提前感谢您的帮助
发布于 2013-08-08 02:33:40
这里有一个有点不同的方法。除了“少于5”问题外,它还涉及"5字无尾“问题:
=LEFT(A1,FIND("^",SUBSTITUTE(A1 & "^"," ","^",5))-1)编辑1:我刚刚注意到关于"-“的部分。我添加的内容不太优雅,但是它处理它,并且还TRIMS任何尾随空格:
=TRIM(LEFT(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1),FIND("^",SUBSTITUTE(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1) & "^"," ","^",5))-1))编辑2:哦,是的,逗号:
=SUBSTITUTE(TRIM(LEFT(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1),FIND("^",SUBSTITUTE(IF(LEFT(A1,2)="- ",MID(A1,3,999),A1) & "^"," ","^",5))-1))," ",",")

发布于 2013-08-09 12:54:44
试试这个:
=TRIM(LEFT(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"-“、”")、“”、“”、“(”“、5)、99)
发布于 2013-08-08 04:16:10
即使在破折号后面有,而不是空格,或者文本中有额外空格,这也是可行的。我经常发现输入不是很干净。
=SUBSTITUTE(LEFT(SUBSTITUTE(TRIM(SUBSTITUTE(A1,"-","",1)),
" ","*",5),IFERROR(FIND("*",SUBSTITUTE(TRIM(SUBSTITUTE(A1,"-","",1)),
" ","*",5))-1,999))," ",",")

编辑:在评论了István之后,我也把我的作品做得完美无缺。
=SUBSTITUTE(LEFT(SUBSTITUTE(TRIM(SUBSTITUTE(LEFT(TRIM(A1),1),"-"," ",1)
&MID(TRIM(A1),2,999))," ","*",5),IFERROR(FIND("*",SUBSTITUTE(
TRIM(SUBSTITUTE(LEFT(TRIM(A1),1),"-","",1)&MID(TRIM(A1),2,999))," ","*",5))-1,999))," ",",")

但我觉得他的更优雅。
https://stackoverflow.com/questions/18116797
复制相似问题