Excel:提取
需求:一個(gè)單元格里有n個(gè)組(每組包含:商品名稱,數(shù)量),要把每種商品的數(shù)量提取出來(lái)放到對(duì)應(yīng)的單元格
按流程先上最終效果圖:
過(guò)程:有人說(shuō)要用到宏,可是我是個(gè)菜鳥(niǎo),之前沒(méi)有接觸過(guò),短時(shí)間讓我寫一個(gè),我搞不定,所以換個(gè)思路,Excel不是有很多函數(shù)么,那就函數(shù)嵌套好了,然后把步驟分解:
1.查找商品的下標(biāo):用FIND()函數(shù)
2.根據(jù)第1步的下標(biāo)截取下標(biāo)之后的字符串:用RIGHT()函數(shù),計(jì)算字符串長(zhǎng)度的時(shí)候用到了LEN()函數(shù)
3.計(jì)算第2步拿到字符串中空格的數(shù)量,分為等于0(A3數(shù)據(jù))和大于0(A1數(shù)據(jù))的情況,思路:
? ? ? (LEN(B27)-LEN(SUBSTITUTE(B27," ","")))/LEN(" ")
4.判斷第3步的空格數(shù)量,如果等于0結(jié)果則為第2步結(jié)果,如果大于0則先拿到第一個(gè)空格下標(biāo)
? 截取字符串(第2步拿到的結(jié)果)0到第一個(gè)空格下標(biāo)得到最終結(jié)果
下面針對(duì)A2進(jìn)行步驟分解~~
1.FIND(B1,A2),得到的結(jié)果是 6
2.RIGHT(A2,LEN(A2)-FIND(B$1,A2)-9),得到的結(jié)果是?81245 ?商品名稱:商品3 ?購(gòu)買數(shù)量:1 ?商品名稱:商品2 ?購(gòu)買數(shù)量:1
3.(LEN(B27)-LEN(SUBSTITUTE(B27," ","")))/LEN(" "),得到的結(jié)果是 8
4.找空格下標(biāo):FIND(" ",B27)(B27是上步所在的單元格),得到的結(jié)果是 6
根據(jù)第3步結(jié)果判斷:IF(B28>0,LEFT(B27,FIND(" ",B27)),B27),得到的結(jié)果是 81245
?
?
當(dāng)然在過(guò)程中這樣一步一步寫太麻煩了,所以我們替換一下函數(shù),得到最終函數(shù):
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中寫入這個(gè)函數(shù)(前面要加上“=”),然后回車,得到一個(gè)數(shù)據(jù),之后拖動(dòng)區(qū)域得到全部,此時(shí)情況是這樣的
發(fā)現(xiàn)有很多#VALUE,不要慌,選中全部,然后Ctrl+G定位,選擇錯(cuò)誤,
然后在任意錯(cuò)誤的單元格,刪掉函數(shù),按Ctrl+Enter,這時(shí)候發(fā)現(xiàn)之前的錯(cuò)誤沒(méi)有了
完成。
重點(diǎn)標(biāo)一個(gè),計(jì)算一個(gè)字符串中某個(gè)字符出現(xiàn)次數(shù)的:(LEN(B27)-LEN(SUBSTITUTE(B27," ","")))/LEN(" ")
防止商品名稱前幾個(gè)字一樣,比如 商品名稱:商品1 購(gòu)買數(shù)量:2 商品名稱:商品11 購(gòu)買數(shù)量:3
執(zhí)行完后排下序,然后對(duì)于大于1的情況單獨(dú)處理,因?yàn)楫?dāng)前這種情況遇到的很少,所以先更新到這里,以后用到的時(shí)候再來(lái)更新。
總結(jié)
- 上一篇: 数据可视化查看2021城市GDP
- 下一篇: NPOI读取excel中的上下标,转化为