excel如何自动识别再填充到表格?

一段如下格式的字符

如何让让excel自动识别并填充到相应表格,就像下面这样

需要用到哪些函数或者帮我写一个,或者是宏,感激不尽,好了再加分

回答之前根据实际情况,先说明两点:
1、你的数据源应该没有那么多“*”号,
2、我的公式会用到“*”号和“价”字,因为数据源有自定义的部分(如收货人、商品名、地区等),故在使用公式前先判断数据源是否有多个“*”号,或多个“价”字。

分两部将你的数据源填充到对应单元格:
一、判断数据源是否有多个“*”号,或多个“价”字:
=LEN(A1)-LEN(SUBSTITUTE(A1,"*",))——将A1长度减去“*”号替换为空后的字符串长度,若为1,则说明数据源中只有一个“*”号

=LEN(A1)-LEN(SUBSTITUTE(A1,"价",))——将A1长度减去“价”字替换为空后的字符串长度,若为1,则说明数据源中只有一个“价”字

如果数据源中有多个“*”号,或多个“价”字,则只好手工复制、粘贴了。

二、排除以上特殊情况后,就可以采用left、right、find函数实现你的要求了:
1、商品名:=RIGHT(LEFT(A1,FIND("*",A1)-2),FIND("*",A1)-2-FIND(CHAR(10),A1)),
说明:“*”号和第一个回车之间的部分;
2、物流:=LEFT(RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)),FIND(" ",RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)))-1),
说明:最后一个回车后的字符串中空格前面的部分;
3、商品价:=RIGHT(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1),FIND(CHAR(10),A1,(FIND(CHAR(10),A1)+1))-FIND("价",A1)-1),
说明:价之后,第二个回车之前的部分;
4、手机号:=RIGHT(LEFT(A1,FIND(",",A1,FIND(",",A1)+1)-1),11),
说明:第二个空格前所有字符串的右侧11个字符;
5、收货人:=LEFT(A1,FIND(",",A1)-1),
说明:第一个“,”前的部分;
6、地区:=RIGHT(LEFT(A1,FIND(" ",A1)),FIND(" ",A1)-FIND(",",A1,FIND(",",A1)+1)),
说明:第二个“,”号与第一个空格之间的内容。追问

中间有回车呢怎么办

追答

回车在函数中也作为一个符——char(10)表示回车。你的数据源只有两个回车,第一个回车在字符串中的位置为=FIND(CHAR(10),A1);第二个回车在字符串中的位置为=FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-02
如果你的数据源的格式一致,可以找到规律,是可以做到的。如果本身的字符信息无规律,比如代表衣服类型的“羽绒服”一会在首,一会在中段,那就没办法了。所以你要告诉我们与你要提取的字符有规律的东西。如:是不是价钱前面一定有个“价”字?包括哪有空格哪有换行要说清楚。
你可以用EXCEL里的数据分列来实现 ,按照向导做就行了,就是输入分割符,然后再整理整理追问

格式是一致的”姓名,手机号,广东省+空格之后的地区都是空格,然后回车到第二行商品名称*号后面是数量 价后面是价格,淘宝给我们生成的是这样的格式

追答

张三=LEFT(A1,FIND(",",A1)-1)
手机号=RIGHT(LEFT(A1,FIND(",",A1,FIND(",",A1)+1)-1),11)
商品名=LEFT(RIGHT(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1),LEN(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1))-LEN(LEFT(A1,FIND(CHAR(10),A1)))),FIND("*",RIGHT(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1),LEN(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1))-LEN(LEFT(A1,FIND(CHAR(10),A1)))))-1)
物流=LEFT(RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)),FIND(" ",RIGHT(A1,LEN(A1)-FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)))-1)
商品价=RIGHT(RIGHT(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1),LEN(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1))-LEN(LEFT(A1,FIND(CHAR(10),A1)))),LEN(RIGHT(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1),LEN(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1))-LEN(LEFT(A1,FIND(CHAR(10),A1)))))-FIND("价",RIGHT(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1),LEN(LEFT(A1,FIND(CHAR(10),A1,FIND(CHAR(10),A1)+1)-1))-LEN(LEFT(A1,FIND(CHAR(10),A1))))))
地区=RIGHT(LEFT(A1,FIND(" ",A1)),LEN(LEFT(A1,FIND(" ",A1)))-FIND(",",A1,FIND(",",A1)+1))

第2个回答  2012-11-02
你举的数据例子只有一个,不好写适用于通用格式的公式,最好加Hi或QQ传个样表。
第3个回答  2012-11-02
没有规律是不行的
第4个回答  2012-11-02
第一副图的信息是在一个单元格内吗,追问

是的,无所谓,我只是一段字符

追答

有关系的,如果是在一个单元格内,并且数据相整齐,请用分列的办法分开就行了。

相似回答