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的情況單獨處理,因為當前這種情況遇到的很少,所以先更新到這里,以后用到的時候再來更新。
總結
- 上一篇: 数据可视化查看2021城市GDP
- 下一篇: NPOI读取excel中的上下标,转化为