【WPS】【EXCEL】将单元格中字符按照分隔符拆分按行填充到其他单元格

时间:2024-12-01 13:25:48

问题:实现如下图的效果


 解答:

一、函数

=IFERROR(TRIM(MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))),(ROW(A1)-1)*LEN($A$2)+1,LEN($A$2))),"")

二、在单元格C2中填写如下函数

三、全选要填充的单元格并且按CTRL+D

函数解析:

1. SUBSTITUTE函数

  • 语法SUBSTITUTE(text, old_text, new_text, [instance_num])

  • 作用:用于将文本字符串中的部分文本替换为新的文本内容。

  • 在本公式中的应用SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2)))这部分里,$A$2表示要处理的文本所在单元格(这里就是存放“晓妍,宇轩,晨晨,子涵”的单元格),","表示要被替换掉的旧文本,也就是逗号,REPT(" ",LEN($A$2))是用来生成替换内容的。REPT函数会按照指定的次数重复文本,这里REPT(" ",LEN($A$2))的意思是重复空格,重复的次数等于A2单元格文本的长度(通过LEN($A$2)获取长度值)。整体上就是把A2单元格文本里的逗号都替换成和原文本长度一样数量的空格,例如原文本长度为15个字符,就把逗号替换成15个空格,目的是为后续按固定长度提取名字做准备,让每个名字之间间隔足够大,便于区分。

2. MID函数

  • 语法MID(text, start_num, num_chars)

  • 作用:从一个文本字符串中截取出指定起始位置以及指定数量字符的部分文本。

  • 在本公式中的应用MID(SUBSTITUTE($A$2,",",REPT(" ",LEN($A$2))), (ROW(A1)-1)*LEN($A$2)+1, LEN($A$2)),前面SUBSTITUTE函数处理后的结果作为MID函数要截取的文本来源,(ROW(A1)-1)*LEN($A$2)+1用来确定每次截取的起始位置,ROW(A1)返回的是当前行号(当公式在C2单元格时,ROW(A1)返回1 ,随着公式向下拖动到C3、C4等单元格时,ROW函数返回的值会相应变成2、3等),乘以LEN($A$2)(也就是原文本长度)再加1,就可以按原文本长度的间隔依次往后确定起始位置,LEN($A$2)作为第三个参数表示每次截取的字符数量就是原文本长度这么多个,这样就能依次把替换逗号为空格后的每个名字所在部分截取出来了。

3. TRIM函数

  • 语法TRIM(text)

  • 作用:去除文本前后多余的空格,使文本更整洁规范地显示。

  • 在本公式中的应用:因为前面通过SUBSTITUTEMID函数操作后,截取出来的名字部分前后可能带有多余的空格,所以用TRIM函数对截取到的内容进行处理,去掉那些多余空格,得到干净的名字文本。

4. IFERROR函数

  • 语法IFERROR(value, value_if_error)

  • 作用:如果表达式value的计算结果为错误(比如公式运算出现错误情况,像原文本不符合预期格式等导致前面函数无法正确提取等情况),则返回value_if_error指定的值,否则返回value本身的值。

  • 在本公式中的应用:在这里整个公式外面套上IFERROR函数,并且value_if_error设置为""(空文本),就是为了避免前面函数在某些特殊情况下出现错误值而影响最终显示效果,让出现错误时直接显示为空文本,保证填充到单元格里的数据是正常名字或者为空的较规范的状态。