今天一位搞財務的mm問我excel計算工齡的問題,我想了想,還真不會啊。搞測試的,寫case,報進度,統計bug一般都是用excel,還真沒弄過計算工齡日期生日之類的。
她的要求是:
居然不會,想了半天想到2個方案:1、用perl寫個腳本給她;2、把信息導入數據庫,用select 語句查詢再把結果導出;
後來仔細想想,這種不符合她的要求,人家要去用excel解決。於是,我就開始查找excel function,關於日期處理的。
在一般的編程語言與數據庫中,都有取得當前日期與字符串處理的函數,於是我就按照這個思路查找。(她沒要求計算出3.5年工齡這樣的,只要求給出整年整月的)
excel取得當前日期的函數是:
today() 取得系統日期 顯示:
1/2/2013
now() 取得系統日期和當前時間
1/2/2013 12:13
因為不需要系統時間,所以就選today()
時間處理函數:DATEDIF(start_date,end_date,unit)
DATEDIF函數的start_date和end_date參數就是起止日期,而unit則是用戶希望DATEDIF函數返回的數值是以什麼為單位的。Unit單位有六種,
分別是: "Y":整年 "M":整月 "D":整天 "YM":不到一年的月數 "YD":不到一年的天數 "MD":不到一個月的天數 需要注意的是
注意:1.DATEDIF函數輸入Unit參數時一定要加上雙引號。2.start_date
例子:
DATEDIF("2001-09-01","2013-01-01","Y") 11
DATEDIF("2001-09-01","2013-01-01","YM") 4
DATEDIF("2001-09-01","2013-01-01","MD") 0
DATEDIF("2001-09-01","2013-01-01","YD") 122
剩下的就easy了,需要用到是
excel連接符&
取得 DATEDIF(A2,B2,"Y")&"-"&DATEDIF(A2,B2,"YM")&"-"&DATEDIF(A2,B2,"MD") 整年 整月 整日 的工
電腦教程
額外思考:
如果是身份證號提取出生日期呢?
首先判斷身份證號是不是18位,len(str)
=if(len(str)=18,true,false)
截取出生年mid(A2,7,4) 從A2單元格第七位算起,截取4個(7、8、9、10)