Excel:提取

需求:一个单元格里有n个组(每组包含:商品名称,数量),要把每种商品的数量提取出来放到对应的单元格

按流程先上最终效果图:

过程:有人说要用到宏,可是我是个菜鸟,之前没有接触过,短时间让我写一个,我搞不定,所以换个思路,Excel不是有很多函数么,那就函数嵌套好了,然后把步骤分解:

1.查找商品的下标:用FIND()函数

2.根据第1步的下标截取下标之后的字符串:用RIGHT()函数,计算字符串长度的时候用到了LEN()函数

3.计算第2步拿到字符串中空格的数量,分为等于0(A3数据)和大于0(A1数据)的情况,思路:

      (LEN(B27)-LEN(SUBSTITUTE(B27," ","")))/LEN(" ")

4.判断第3步的空格数量,如果等于0结果则为第2步结果,如果大于0则先拿到第一个空格下标

  截取字符串(第2步拿到的结果)0到第一个空格下标得到最终结果

下面针对A2进行步骤分解~~

1.FIND(B1,A2),得到的结果是 6

2.RIGHT(A2,LEN(A2)-FIND(B$1,A2)-9),得到的结果是 81245  商品名称:商品3  购买数量:1  商品名称:商品2  购买数量:1

3.(LEN(B27)-LEN(SUBSTITUTE(B27," ","")))/LEN(" "),得到的结果是 8

4.找空格下标:FIND(" ",B27)(B27是上步所在的单元格),得到的结果是 6

根据第3步结果判断:IF(B28>0,LEFT(B27,FIND(" ",B27)),B27),得到的结果是 81245

 

 

当然在过程中这样一步一步写太麻烦了,所以我们替换一下函数,得到最终函数

IF((LEN(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-9))-LEN(SUBSTITUTE(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-9)," ","")))/LEN(" ")>0,LEFT(RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-9),FIND(" ",RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-9))),RIGHT($A2,LEN($A2)-FIND(B$1,$A2)-9))

不要晕,哈哈哈~~~

在B2中写入这个函数(前面要加上“=”),然后回车,得到一个数据,之后拖动区域得到全部,此时情况是这样的

发现有很多#VALUE,不要慌,选中全部,然后Ctrl+G定位,选择错误,

然后在任意错误的单元格,删掉函数,按Ctrl+Enter,这时候发现之前的错误没有了

完成。


重点标一个,计算一个字符串中某个字符出现次数的:(LEN(B27)-LEN(SUBSTITUTE(B27," ","")))/LEN(" ")

防止商品名称前几个字一样,比如 商品名称:商品1 购买数量:2 商品名称:商品11 购买数量:3

执行完后排下序,然后对于大于1的情况单独处理,因为当前这种情况遇到的很少,所以先更新到这里,以后用到的时候再来更新。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页