请教EXCEL中在一个字符串中提取字符串到指定多个的位置。
比如(A-B-C-D)(A,B,C,D这几个字符串长度不一,且不一样的,也有可能为空。
“-”是定变的,但是数量不同,输出位置不同(如A到A2,C到A3,B到A5,等等)
部分能实现,部分不能实现,(比如这串字符串:HID-D2S-15000K-001).就是A.B能实现,C,D不能实现,还有字符串不一定是就这几个,有时候还有更多
追答其实A2就是基本的公式,要按A1的字符个数(或说长度)来设计公式。如果取值错误的话,只要将公式里的“20”放大即可
由于输出的位置不连贯,不方便公式的拉动填充,可考虑使用辅助列
如C列作为辅助列,C1输入公式
=TRIM(MID(SUBSTITUTE($A$1,"-",REPT(" ",100)),ROW(A1)*100-99,100))
下拉至C10,这应该足够了吧?
再在你要输出的单元格分别对C列取值就简单多了
如 A2 =C1
A3 =C3
A5 =C2
。
。
。
TRIM(MID(SUBSTITUTE($A1,"-",REPT(" ",100)),ROW(A$1)*100-99,100))这是我修改后的,你看看行么,参考你的思路把列改成行,我考虑的是,那个100的数值是什么意思,能不能用LEN函数代替
追答你只要试一下 =SUBSTITUTE($A$1,"-",REPT(" ",100)) 就知道这100是怎么回事了
将A1里的短横,全用100个空格来替换
如果要用LEN代替也可以啊
如
=TRIM(MID(SUBSTITUTE($A$1,"-",REPT(" ",LEN(A$1))),ROW(A1)*(LEN(A$1))-(LEN(A$1)-1),LEN(A$1)))
下拉即可
你上面修改的公式,(SUBSTITUTE($A1 这个$A1应该是 A$1才方便下拉公式填充吧,要不然下拉后就不是在A1取值了
PS:公式好用的话请选为最佳答案啊 -_-|||
对单个还行,对一列数据呢,
追答那就提取到同一行的右边
如数据在A列
B1输入公式
=TRIM(MID(SUBSTITUTE($A1,"-",REPT(" ",LEN($A1))),COLUMN(A1)*(LEN($A1))-(LEN($A1)-1),LEN($A1)))
下拉再右拉
谢谢,这次就好了。
能提取出来了。
还有一步骤就是判断了,是否是需要的字符串,怎么做,
大哥,你不能一次过把话说完么。。。。
判断是否是需要的条件是什么?
你是师傅啊,我在向你请教呢,
判断语句描述出来就是:
第一层:判断(前面拉出来的:F1:G1)子数据,是否包含在(如:数据表!$J$1:数据表!L$1)母数据中,如果包含就返回当前值,如果没就为空。
第二层如果第一次层都是空那么(H1=数据表!M1)否则((H1=数据表!M1)+H1)
又回到最初的问题上去了,你这种搞法纯粹是。。。。
第一行拉出来的提取值,不要再动了,就当是辅助列。
如何判断的公式,放在第二行。
如你所主的第一层。在F2输入公式
=IF(COUNTIF(数据表!$J$1:L$1,F1)>0,F1,"")
右拉至G2
第二层,在H2输入公式
=IF(AND(F2="",G2=""),数据表!M1,数据表!M1+H1)