數據處理過程中,有時候我們需要從數據列中提取出自己想要的值,作為新的列去使用,我們來看看通過函數如何實現拆分與提取數據吧~
場景一:使用文本函數提取數據
需求1:提取訂單編号中的前綴、中間、後綴部分。
分析:訂單編号非常規律,前綴是6位,中間是9位-後綴是4位,可以直接使用對應的文本截取函數進行提取數據。
公式:
前綴:=LEFT(A3,6)
中間:=MID(A3,8,9)
後綴:=RIGHT(A3,4)
文本截取函數 |
含義 |
LEFT(文本,截取個數) |
左截取:從文本左邊截取對應個數的内容 |
MID(文本,開始截取的位置,截取個數) |
中間截取:從文本指定位置截取對應個數的内容 |
RIGHT(文本,截取個數) |
右截取:從文本左邊截取對應個數的内容 |
進階需求:訂單編号中的前綴、中間、後綴的長度不一緻
公式:
前綴:=LEFT(A3,FIND("-",A3)-1) —使用LEFT左截取,截取個數根據第一個“-”的位置确定。
中間:=MID(A3,FIND("-",A3) 1,FIND("-",A3,FIND("-",A3) 1)-FIND("-",A3)-1) —使用MID中間截取,截取開始的位置根據第一個“-”的位置确定,截取的個數根據第二個“-”的位置減去第一個“-”的位置的差值确定。
後綴:=MID(A3,FIND("-",A3,FIND("-",A3,FIND("-",A3) 1)) 1,10)—使用MID中間截取,
截取開始的位置,通過第2個“-”的位置來确定,通過FIND查找,查的開始位置為第一個“-”的位置加1
截取個數的數值可以寫大點,超過了就已有的個數會按照已有個數取。
文本查找函數 |
含義 |
FIND/SEARCH(要查的文本, 被查的文本, 查的開始位置) |
要查文本在被查的文本的第一個位置(找不到返回 #VALUE!),省略第三參數,默認為1 |
FIND與SEARCH的區别: FIND— 識别大小寫字母,不可以使用通配符 SEARCH— 不識别大小寫字母,可以使用通配符 |
需求2:将數據中的單位與數字分開
公式:
單位:=RIGHT(A3,LENB(A3)-LEN(A3))—使用RIGHT右截取,截取個數等于字節長度-字符長度
數字:=LEFT(A3,LEN(A3)-(LENB(A3)-LEN(A3)))—使用LEFT左截取,截取個數=字符長度-(字節長度-字符長度)(字節長度-字符長度,其實是文字的個數,整體的個數減去文字的個數就是數字個數)
文本長度函數 |
含義 |
LEN(文本) |
字符長度(一個數字、文字、符号、英文各自為1個字符) |
LENB(文本) |
字節長度(一個中文、标點符号都各自為2個字節,英文、數字是1個字節) |
需求3:将地址中的省份、城市、詳細地址分開
省份是截取地址中的省或者區的信息;城市是截取市的信息;詳細地址是市後面的信息
公式:
省份:=LEFT(A3,FIND(IF(ISNUMBER(FIND("省",A3)),"省","區"),A3))
使用LEFT從左截取,截取的長度,可以根據省或者區的位置,通過FIND找,需要知道第一個參數是省還是區,通過IF判斷,如果找到“省”,就是省,否則就是“區”。而find找不到把#VALUE!錯誤,我們通過ISNUMBER,将其變成TRUE或者FALSE。
城市:=MID(A3,FIND(IF(ISNUMBER(FIND("省",A3)),"省","區"),A3) 1,FIND("市",A3)-FIND(IF(ISNUMBER(FIND("省",A3)),"省","區"),A3))
直接使用MID中間截取,截取的位置通過市或者區的位置來确定,截取的個數根據“市”的位置減去市或者區的位置來确定。
詳細地址:=MID(A3,FIND("市",A3) 1,99)
直接使用MID中間截取,截取的位置通過找“市”的位置
需求4:提取指定的字符最後一次出現後的數據
提取文本中第二列指定字符最後一次出現後的數據
方法一:将最後一個指定的字符替換成一個很大的字符(々),然後通過MID中間截取,截取開始的位置就是“々”的位置,截取個數可以寫大點即可
最主要的是如何隻替換最後一個指定字符将其變成(々)
将所有的指定字符替換為空,總長度-替換後的字符=查找字符的個數,個數正好是最後一個指定的字符。
=MID(A3,FIND("々",SUBSTITUTE(A3,B3,"々",LEN(A3)-LEN(SUBSTITUTE(A3,B3,"")))) 1,99)
方法二:将所有的指定字符替換為99(很多)個空格,然後右截取一個比較大的字符(包括想要提取的數據),然後進行清洗,去掉空格即可
=TRIM(RIGHT(SUBSTITUTE(A3,B3,REPT(" ",90)),90))
函數 |
含義 |
SUBSTITUTE(文本,被替換的字符,新的字符, 替換第幾個) |
對指定的字符進行替換 |
REPT(文本,重複的次數) |
将文本重複一定的次數 |
TRIM(文本) |
除了單詞之間的單個空格外,清除文本中所有的空格 |
需求5:提取不規範日期格式中的年月日
這個比較簡單,就不多說了
場景二:使用日期函數提取數據
需求1:從規範的日期分别提取對應的數據
列 |
公式 |
函數 |
含義 |
年 |
=YEAR(A3) |
YEAR(日期) |
返回日期的年份值 |
月 |
=MONTH(A3) |
MONTH(日期) |
返回日期的月份值 |
日 |
=DAY(A3) |
DAY(日期) |
返回一個月中的第幾天的數值(1-31) |
小時 |
=HOUR(A3) |
HOUR(日期) |
返回一個時間值中的小時數 |
分鐘 |
=MINUTE(A3) |
MINTUTE(日期) |
返回一個時間值中的分鐘數 |
秒 |
=SECOND(A3) |
SECOND(日期) |
返回一個時間值中的秒數 |
星期幾 |
=WEEKDAY(A3,2) |
WEEKDAY(日期,周期類型) |
返回日期在一周的第幾天(以第二參數确定周期) |
日期 |
=DATE(YEAR(A3),MONTH(A3),DAY(A3)) |
DATE(年,月,日) |
返回指定的日期 |
月末 |
=EOMONTH(A3,0) |
EOMONTH(日期,日期之前或之後的月份數) |
返回指定日期之前或之後某個月的最後一天的日期(月底)(Months為0則當前月份) |
文章雖然是實現數據的拆分與提取,但是其中基本上将常用的文本和日期函數說的差不多了,而且除了使用函數之外,一些技巧也能實現數據的拆分,比如快速填充(CTRL E)和分列,分列大家可以看這個文章Excel中強大的分列功能,常見用法你了解嗎?。之前文章也講解過如何拆分工作表(将工作表按照某個字段拆分成多個工作表),大家可以也看做數據的拆分與提取。大家有什麼問題,歡迎在評論區留言~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!