excel函数技巧:reduce+substitute实现文本换行-趣帮office教程网

如图,想要将B3里的这几段文字,拆分成A列一行一行,每行字符数最多为42个,同时每段段首要缩进,遇到段落要换行。公式如下:

=DROP(REDUCE(" "&SUBSTITUTE(B3,CHAR(10),CHAR(10)&" "),SEQUENCE(20),LAMBDA(x,y,LET(

n,MID(TAKE(x,1),1,42),

m,IF(ISNUMBER(FIND(CHAR(10),n)),MID(TAKE(x,1),1,FIND(CHAR(10),n)),n),

VSTACK(SUBSTITUTE(x,m,""),m)))),1)

公式思路:公式使用reduce函数解决问题,其中初始值设定为:

" "&SUBSTITUTE(B3,CHAR(10),CHAR(10)&" "),意思是为每一段加段首空格。利用char(10)的段尾标记为下一段添加段首空格。

变量n:选取变量x的第一行,从第一个开始,提取42个字符。

变量m:判断n提取的字符串中是否含有char(10),也就是断行符号。如果有,则从第一个开始提取到断行符处。没有就用n的取值。

VSTACK(SUBSTITUTE(x,m,""),m)))),1):将提取的字符串m从x中删除,以便下一次循环时提取一下断。然后将删除后的作为第一行,提取的字符m作为第二行,形成新的x。

reduce的二参起着控制循环次数的作用,并不参与运算。