原文標(biāo)題:《比你笨法快 10 倍,這才是 Excel 中最牛的日期數(shù)據(jù)整理方法!》
在日常工作中,處理數(shù)據(jù)時(shí)除了查找、求和等之外,我們還會(huì)經(jīng)常與日期數(shù)據(jù)打交道。
其中我們經(jīng)常使用的函數(shù),有 Date(合并日期)、Year(獲取日期的年份)、Month(獲取日期的月份)、Day(獲取日期的天數(shù))等等。
這不,最近朋友發(fā)來一個(gè)數(shù)據(jù),是從系統(tǒng)里面導(dǎo)出來的。如下圖:
該系統(tǒng)自動(dòng)將日期與型號(hào)混在一起,現(xiàn)在需要將其中的日期提取出來。
提取規(guī)則是:
? 前三個(gè)字符代表的是月份數(shù)。
? 第 5 和第 6 個(gè)字符代表兩位年份數(shù)。
? 第 7 和第 8 個(gè)字符代表兩位天數(shù)。
提取結(jié)果如下圖:
也就是將英文表示的【月-年-日】轉(zhuǎn)換成純數(shù)字的【年-月-日】形式的日期。
問題分析
我們平時(shí)處理的日期大部分是由純數(shù)字組成的,可能很少接觸到這類英文日期。
不過一旦遇到了,我們還是要想辦法解決的,對(duì)不對(duì)?
比如前面提到的這個(gè)案例,我們可以使用下面的函數(shù)來提取出【年-月-日】形式的日期。
=DATE(MID(A2,5,2),LEFT(A2,3),MID(A2,7,2))
結(jié)果卻是錯(cuò)誤值!
為啥?接著往下看你就知道啦!
先來看下公式解析:
? 我們先用 MID (A2,5,2),提取出年份數(shù)
從該文本的第 5 個(gè)字符開始,截取 2 個(gè)字符,結(jié)果如下圖:
? 再用 LEFT (A2,3),提取出月份數(shù)
從該文本的第 1 個(gè)字符開始,截取 3 個(gè)字符,結(jié)果如下圖:
? 之后用 MID (A2,7,2),提取出天數(shù)
從該文本的第 7 個(gè)字符開始,截取 2 個(gè)字符:
? 最后用 Date 函數(shù)將【年月日】整合在一起。
=DATE(MID(A2,5,2),LEFT(A2,3),MID(A2,7,2))
看上去沒有問題呀?為什么會(huì)出現(xiàn)錯(cuò)誤值#VALUE 呢?
其實(shí),問題就出在月份是英文字母。而不是數(shù)字。
Date 函數(shù)要求【年月日】三個(gè)參數(shù)都必須是數(shù)字。(不論是文本型數(shù)字,還是數(shù)值型數(shù)字)
思路有了,下面我們就來看看怎么解決吧!
解決方案
方案 A
將英文月份轉(zhuǎn)變成數(shù)字,我們可以使用 Match 函數(shù)。
公式如下:
=MATCH("Mar",{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"},0)
公式解析:
MATCH(lookup_value, lookup_array, [match_type])
該函數(shù)有三個(gè)參數(shù):
? 查找值。
第一參數(shù):就是我們這里要查找的月份,比如:"Mar" ,
? 在哪個(gè)區(qū)域或者數(shù)組中查找。
第二參數(shù):我們需要構(gòu)造一個(gè) 1 月-12 月內(nèi)存數(shù)組:
{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"}
用 Match 函數(shù)去查找第一參數(shù)在第二參數(shù)中的位置,如果在第三個(gè),就返回 3,正好也是 3 月份的意思。
? 精確或者是模糊匹配。
第三參數(shù):輸入 0,表示精確查找。
最終我們將上面公式整合在一起,結(jié)果為:
公式如下:
=DATE(MID(A2,5,2),MATCH(LEFT(A2,3),"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec",0),MID(A2,7,2))
公式的第二部分由 Match 函數(shù)組成。返回?cái)?shù)字月份。
這樣結(jié)果就出來了!
但是,小伙伴有沒有發(fā)現(xiàn)年份是錯(cuò)的,Excel 自動(dòng)給我們加了 19 數(shù)字。
這個(gè)還不是我們想要的,所以我們?cè)谀攴萸懊婕由?20 即可。
公式如下:
=DATE(20&MID(A2,5,2),MATCH(LEFT(A2,3),{"Jan";"Feb";"Mar";"Apr";"May";"Jun";"Jul";"Aug";"Sep";"Oct";"Nov";"Dec"},0),MID(A2,7,2))
如果小伙伴們不想手動(dòng)輸入月份的常量數(shù)組,也可以用下面的公式:
公式如下:
=DATE(20&MID(A2,5,2),MATCH(LEFT(A2,3),TEXT(20&-ROW($1:$12),"mmm"),0),MID(A2,7,2))
其中:
TEXT(20&-ROW($1:$12),"mmm")
構(gòu)造一個(gè)英文月份的常量數(shù)組。這個(gè)公式的結(jié)果正好是上面的英文月份數(shù)組。
有興趣的小伙伴們可以參考下。
方案 B
另外,除了上面常規(guī)的套路之外,還有一種非常非常簡(jiǎn)單的方法,就是下面這種方法。
在【設(shè)置單元格格式】==》【數(shù)字】==》【日期】中,查看內(nèi)置英文日期的顯示方法。
從圖中可以看出:
英文日期的顯示方式是:【日-月-年】
我們可以通過這種方法來組合成日期形式,然后再轉(zhuǎn)換成目標(biāo)日期。如下圖:
【B2】公式如下:
=MID(A2,7,2)&"-"&LEFT(A2,6)
公式解析:
? 先用 MID (A2,7,2) 提取出天數(shù):12
? 再用 LEFT (A2,6) 提取出月和年:Mar-22
? 最后用 & 符號(hào)再連接一個(gè)日期符號(hào)「-」:12-Mar-22
日期樣式已經(jīng)組合成系統(tǒng)內(nèi)置的日期形式了。
但是,現(xiàn)在的問題是如何轉(zhuǎn)換成純數(shù)字的目標(biāo)日期呢?
其實(shí)方法很簡(jiǎn)單!
就是進(jìn)行一次數(shù)學(xué)運(yùn)算即可!如下圖:
【B2】公式如下:
=--(MID(A2,7,2)&"-"&LEFT(A2,6))
公式解析:
先使用一對(duì)括號(hào) ( ) 放在原公式的外面,再使用兩個(gè)負(fù)號(hào)(--)將其轉(zhuǎn)換為純數(shù)字日期。
就這樣一個(gè)簡(jiǎn)單的轉(zhuǎn)換就實(shí)現(xiàn)了我們的需求了,還是挺簡(jiǎn)單的吧!
寫在最后
今天,我們分享了如何將英文日期轉(zhuǎn)換為符合中國人習(xí)慣的純數(shù)字日期。
? 使用日期和文本截取函數(shù)的常規(guī)方法將【月-年-日】轉(zhuǎn)換成【年-月-日】。
? 模擬套用系統(tǒng)內(nèi)置樣式進(jìn)行轉(zhuǎn)換。
可見使用第二種方法,不僅公式非常簡(jiǎn)單,而且也大大的提高表格運(yùn)行效率。
希望小伙伴們?cè)谄綍r(shí)的工作中,可以多多留意下系統(tǒng)里面內(nèi)置的各種設(shè)置,肯定能發(fā)現(xiàn)不少好用的功能!
本文來自微信公眾號(hào):秋葉 Excel (ID:excel100),作者:明鏡在心
廣告聲明:文內(nèi)含有的對(duì)外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。