[爆卦]excel日期相減是什麼?優點缺點精華區懶人包

為什麼這篇excel日期相減鄉民發文收入到精華區:因為在excel日期相減這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者JieJuen (David)看板Office標題Re: [算表] EXCEL日期計算問題時間M...


想得到某期間過了幾年幾月幾日
其實是很複雜的問題
因為這是人們一般不很精確的說法
同樣的幾年幾月幾日,開始或結束的日期不同,
經歷的時間就不同,不是單純把月份、日數取出來加加減減就好

直接看難一點的例子
從今天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)
websterskimo:上面算日期的問題也是困擾我滿久的 11/06 09:05
websterskimo:雖然還沒有辦法馬上吸收..還是感謝你的分享嘍 11/06 09:05
websterskimo:底下轉國字的字法真的很不錯.. 11/06 09:06
websterskimo:先前當參一時有用一些方法去寫..但比較沒效率 11/06 09:07
JieJuen:也感謝你的回應囉^^ 11/06 11:24
JieJuen:原題 #16F0hJyI 2419 11/27 04:45
※ 編輯: JieJuen 來自: 218.164.49.60 (11/27 16:44)

你可能也想看看

搜尋相關網站