Re: [算表] EXCEL日期計算問題 --DATEDIF,數字轉國字
想得到某期間過了幾年幾月幾日
其實是很複雜的問題
因為這是人們一般不很精確的說法
同樣的幾年幾月幾日,開始或結束的日期不同,
經歷的時間就不同,不是單純把月份、日數取出來加加減減就好
直接看難一點的例子
從今天2007/11/5到上個閏年的前一天2004/2/28
經過了幾年幾月幾日?
首先,人算的過程是
2/28比11/5還早
因此2007-2004=3年
28日比5日還晚
因此10月-2月=8月
日期28到隔月5日
因為已經算出經過了3年8個月
所以日期部分
應該用2007/10/28~2007/11/5來算
故為8日
因此答案為:3年8月8日
這是很奇怪的
如果2007/2/28~2007/3/5
應該是只隔5日
2004/2/28~2004/3/5
則隔6日
但是我們要的答案卻是8日
可見這種說法多不精確!
所以如果要把日、月取出來算的話
條件要設很多
把人算的思路都寫進去
有點麻煩!
假設是閏年當天,也就是
2004/2/29~2007/11/5
就更好笑了~
3年還是沒問題
月分就要由2007/2/29~2007/11/5決定
但是2007年2月沒有29日!
2/28日剛剛算過了
現在晚了一天
只好當3/1來算了
也就是
2004/2/29~2007/3/1
2004/3/1~2007/3/1
都說過了整整3年~
回到題目,
現在算到經過3年
考慮2007/3/1~2007/11/5
1日早於5日
月份=11-3=8
麻煩的還沒結束!!
開始算日,
目前已得經過3年8個月
因為2004/2/29加上3年8個月
日期是2007/10/29!!
有29日了!
於是乎
2007/10/29~2007/11/5
經過了7日
答案是3年8個月又7天
結果看起來很正常
晚一天開始,經過的期間少1天
雖然計算的過程無比的艱辛!
然而,當問題變回正常時,
也就是請問2004/3/1~2007/11/5
完全沒有異議的答案:3年8個月又4天
卻讓人覺得,這到底正不正確?
那2天,就這樣消失了....(7天少一天應是6天,那2天消失在10/30.10/31)
也難怪,
沒有人想回答這個問題,
想了就頭痛.
不過,人們的這種說法還是存在的,
最糟也就差個3天左右,(沒有閏年時)
取得大略的時間概念時仍非常有用,
也難怪想要用excel算了。
還好,excel還真的有這種稀奇古怪的函數,
完全遵照人們的算法
2004/3/1 寫於A1
2007/11/5 寫於A2
年=DATEDIF($A$1,$A$2,"y")
月=DATEDIF($A$1,$A$2,"ym")
日=DATEDIF($A$1,$A$2,"md")
它是採用"移動"的概念
年數最好算,算"整年數"
月數,移動年,也就是移到今年或去年來算
日數,移動年與月,
也就是移到上個月或本月來算.
這就是所需的函數了(...呼~好累)
完全符合以上人算的結果。
但是這樣的時間間隔不太精確,
也許是因為這樣的原因(純屬臆測),
EXCEL的說明裡沒有(XP中).
各位可自行GOOGLE
http://www.officefans.net/cdb/viewthread.php?tid=82354
(以下為截取) (應為早些時期的說明檔)
------------------------------------------
語法
DATEDIF(start_date,end_date,unit)
Start_date 為一個日期,它代表時間段內的第一個日期或起始日期。日期有多種輸入方
法:帶引號的文本串(例如 "2001/1/30")、系列數(例如,如果使用 1900 日期系統則
36921 代表 2001 年 1 月 30 日)或其他公式或函數的結果(例如,
DATEVALUE("2001/1/30"))。有關日期系列數的詳細信息,請參閱 NOW。
End_date 為一個日期,它代表時間段內的最後一個日期或結束日期。
Unit 為所需信息的返回類型。
Unit 返回
"Y" 時間段中的整年數。
"M" 時間段中的整月數。
"D" 時間段中的天數。
"MD" start_date 與 end_date 日期中天數的差。忽略日期中的月和年。
"YM" start_date 與 end_date 日期中月數的差。忽略日期中的日和年。
"YD" start_date 與 end_date 日期中天數的差。忽略日期中的年。
-------------------------------------------
該來源寫"忽略"一詞感覺容易誤會
例如其中"YM"該來源寫忽略日期中的日和年。
如果是這樣,似乎就跟用MONTH取出相減沒兩量,
測試結果,是會考慮到日的,
因此改稱"移動"或是什麼詞可能更好。
它的參數也是有邏輯的
一定照Y M D的順序排
第一位是以什麼單位(unit)移動,第二位是計算什麼。
都移動到上個月或本月了年當然也已移動,故"MD"移動月和年。
該網頁也有另一個流傳開來的EXCEL隱藏函數,供參考。
------------------------------------------------------------------
NUMBERSTRING
EXCEL中隱藏了一個數字轉大寫的函數NUMBERSTRING,但它僅支持正整數,用中文版的朋
友可以試試這個函數:
=NUMBERSTRING(VALUE,TYPE)
NumberString(1234567890,1) = 一十二億三千四百五十六萬七千八百九十
NumberString(1234567890,2) = 壹拾貳億參仟肆佰伍拾陸萬柒仟捌佰玖拾
NumberString(1234567890,3) = 一二三四五六七八九○
------------------------------------------------------------------
※ 引述《ihsakat (Victor)》之銘言:
: 軟體:Office EXCEL
: 版本:2003
: 兩日期相減 用今天的日期-某日期(B:B)
: =TEXT(TODAY()-B:B,"yy年mm月dd日")
: 想要得到期間過了幾年幾月幾日
: 結果居然會多一個月..囧
: 我用today()-2007/5/5 結果是一個月
: 請求高手解答 感恩
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.123.42.89
※ 編輯: JieJuen 來自: 218.164.50.116 (11/05 18:43)
推
11/06 09:05, , 1F
11/06 09:05, 1F
→
11/06 09:05, , 2F
11/06 09:05, 2F
→
11/06 09:06, , 3F
11/06 09:06, 3F
→
11/06 09:07, , 4F
11/06 09:07, 4F
推
11/06 11:24, , 5F
11/06 11:24, 5F
→
11/27 04:45, , 6F
11/27 04:45, 6F
※ 編輯: JieJuen 來自: 218.164.49.60 (11/27 16:44)
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Office 近期熱門文章
PTT數位生活區 即時熱門文章