简体   繁体   English

excel公式中的智能拆分字符串-全词

[英]intelligent split string in excel formula - full words

How to split string that the words isn't split and result string is max 30 chars?如何拆分单词未拆分且结果字符串最多为 30 个字符的字符串?

input cell = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt'

output cell = 'Lorem ipsum dolor sit amet'

I need only formula, not VBA.我只需要公式,不需要 VBA。

Try this:尝试这个:

Non- let function version:让 function版本:

在此处输入图像描述

=IF(RIGHT(IF(RIGHT(LEFT(A2,31),1)=" ",LEFT(A2,30),LEFT(A2,FIND("@",SUBSTITUTE(LEFT(A2,30)," ","@",(LEN(LEFT(A2,30))-LEN(SUBSTITUTE(LEFT(A2,30)," ","")))))-1)),1)=",",
LEFT(IF(RIGHT(LEFT(A2,31),1)=" ",LEFT(A2,30),LEFT(A2,FIND("@",SUBSTITUTE(LEFT(A2,30)," ","@",(LEN(LEFT(A2,30))-LEN(SUBSTITUTE(LEFT(A2,30)," ","")))))-1)),LEN(IF(RIGHT(LEFT(A2,31),1)=" ",LEFT(A2,30),LEFT(A2,FIND("@",SUBSTITUTE(LEFT(A2,30)," ","@",(LEN(LEFT(A2,30))-LEN(SUBSTITUTE(LEFT(A2,30)," ","")))))-1)))-1),
IF(RIGHT(LEFT(A2,31),1)=" ",LEFT(A2,30),LEFT(A2,FIND("@",SUBSTITUTE(LEFT(A2,30)," ","@",(LEN(LEFT(A2,30))-LEN(SUBSTITUTE(LEFT(A2,30)," ","")))))-1)))

Office 365 Let function version: Office 365 Let function版本:

=LET(a,IF(RIGHT(LEFT(A2,31),1)=" ",LEFT(A2,30),LEFT(A2,FIND("@",SUBSTITUTE(LEFT(A2,30)," ","@",(LEN(LEFT(A2,30))-LEN(SUBSTITUTE(LEFT(A2,30)," ","")))))-1)),IF(RIGHT(a,1)=",",LEFT(a,LEN(a)-1),a))

Simpler array formula:更简单的数组公式:

=SUBSTITUTE(TRIM(LEFT(A1,MAX(IF(MID(A1,ROW($1:$30),1)=" ",ROW($1:$30))))),",","")

Array formula after editing is confirmed by pressing ctrl + shift + enterctrl + shift + enter确认编辑后的数组公式

在此处输入图像描述

FILTERXML() may give you best desired result with more option. FILTERXML()可以通过更多选项为您提供最理想的结果。 Try below formula-试试下面的公式 -

=FILTERXML("<t><s>"&SUBSTITUTE(A1,", ","</s><s>")&"</s></t>","//s[string-length(.) <=30]")

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM