最简单的步骤如下
1、将A列数据以逗号为标识符进行分列
2、分列结果后,再用源数据+1
3、用textjoin函数将单元格连接起来(textjoin是新函数,很实用,经网友提醒该函数只在最新版的msoffice或wps才有)
C1=TEXTJOIN(",",,IFERROR(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),COLUMN(A:J)*99-98,99))+1,""))
然后下拉公式,不需要三键
追问你这不是抄那个画线工的么,再说了,要三键不然出不来数据
追答可能我用正版的office365,不用三键
如果是2019版本或Office 365,可用公式:
C1=TEXTJOIN(",",,IFERROR(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),COLUMN(A:J)*99-98,99))+1,""))
同时按Ctrl+Shift+Enter三键输入数组公式,下拉。
追问这个公式可行,就是数据少了不行,而且末尾多了些逗号
请像本人的截图,带行号和列标,光标定位到公式所在单元格中,上面的公式编辑栏中显示出公式,一起截图。这样就能看到工作表公式计算的全貌。
如果方法得当,公式编写无误,是不应该出现追问所说的情况的。
用公式:
=TEXTJOIN(",",1,IFERROR(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),COLUMN(A:J)*99-98,99))+1,""))
试试,公式中的1也可用: TRUE
可能是你的Excel版本不同,或者用的是WPS2019(本人没用过,但知道也增加了这个函数)
数据没有逗号了可行。就是当数据原本过长时,需要空很多列,才能完整计算出来,如A3数据,只有空出BCDEF多列时,G3数据才计算完整,不然就只有到21为止。然后如果放在数据的下面来运算,就还是不行了,只算到21为止
数据很多时,一是要加大99、98数字,如199、198,甚至999,998
二是A:J中的J要取更多的列,就是所取的列数甚至少要等于数据个数,或者用:ROW$1:$99)
这样的方式,ROW$1:$99)就是可以有99个数据。
=TEXTJOIN(",",1,IFERROR(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),COLUMN($A:$ZZ)*99-98,99))+1,""))
这样也行,防止下拉变形。谢谢了。
前面的回答用COLUMN,就是方便下拉不要加$,用ROW就要加$
本回答被提问者采纳加辅助列轻松解决(这个办法各版本通用,且是常规公式),e1=IF(COLUMN(A1)>LEN($A1)-LEN(SUBSTITUTE($A1,",",""))+1,"",D1&LEFT(MID(","&$A1,FIND("+",SUBSTITUTE(","&$A1,",","+",COLUMN(A1)))+1,5)&",",FIND(",",MID(","&$A1,FIND("+",SUBSTITUTE(","&$A1,",","+",COLUMN(A1)))+1,5)&",")-1)+1&",")右拉至足够用的位置(我拉到L列了),如果要乘2就把公式中的+1&改为*2&即可,然后c1=LEFT(LOOKUP(1,0/(E1:L1<>""),E1:L1),LEN(LOOKUP(1,0/(E1:L1<>""),E1:L1))-1)
这个分列我知道,但是不方便