Re: [算表] EXCEL日期計算問題 --DATEDIF,數字轉國字

看板Office作者 (David)時間17年前 (2007/11/05 15:48), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串2/2 (看更多)
想得到某期間過了幾年幾月幾日 其實是很複雜的問題 因為這是人們一般不很精確的說法 同樣的幾年幾月幾日,開始或結束的日期不同, 經歷的時間就不同,不是單純把月份、日數取出來加加減減就好 直接看難一點的例子 從今天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
原題 #16F0hJyI 2419
11/27 04:45, 6F
※ 編輯: JieJuen 來自: 218.164.49.60 (11/27 16:44)
文章代碼(AID): #17BihDJU (Office)
文章代碼(AID): #17BihDJU (Office)