查看單個文章
舊 2013-01-03, 10:51 PM   #10 (permalink)
getter
管理員
 
getter 的頭像
榮譽勳章
UID - 6433
在線等級: 級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時級別:96 | 在線時長:9733小時 | 升級還需:64小時
註冊日期: 2002-12-08
住址: 天線星球
文章: 8157
精華: 0
現金: 19955 金幣
資產: 765391 金幣
預設

引用:
作者: leowang 查看文章
就大大的圖所顯示的09:18 就顯示918
而不會顯示0918
這種的喔 ... 原因是在於 函數本身的回傳啦 ...
當各自組合之後的 顯示概念上的笑話 ...
這樣的話,在年月的部份也會鬧出相同的效果出來 ...

主要原因是 Excel 函數本身的回傳值,只要是個位數都會只有 1位數
的回傳,舉例:
DAY(1/9) = 9 但不會顯示 09
MONTH(1/9) = 1 但不會顯示 01

當以字串組合後就會變成 19 ...

不信 ... 去改變月日就知道了 ...

若是先前的公式,若是 2013/01/01 03:03 AM 好了
就會被翻譯成 11 33,這不是函數出錯,是經過組合後的顯示邏輯的格式錯
誤 ...

這不是函數的錯,因為是回傳成數字。不是特定格式的顯示文字,所有的函數
都是這樣 ...

怎麼解決,設法補足缺乏的那的 0 的那 1位數,使其變成 2位數,在經組合之後
就會是想要的結果 ...

怎麼補 ... 有兩種方式 1個是使用函數 IF,另一個使用 VBA 自建函數來作業
這裡先提供第一種方式 ... 比較簡單 ...

原理很簡單 ... 先用 IF 判斷單一函數的回傳值是不是個位數的條件,是的話
就補個 0。 簡單喔

這裡以月先示範一下 IF(MONTH(A1)<10,0&MONTH(A1),MONTH(A1))
這樣的話 1 就會變成 01 了

時間的話就比較麻煩了 ... 因為有 12 hr 或 24hr
24hr
=IF(MONTH(A1)<10,0&MONTH(A1),MONTH(A1)) &
IF(DAY(A1)<10,0&DAY(A1),0&DAY(A1)) &CHAR(10)&
IF(HOUR(A1)<10,0&HOUR(A1),HOUR(A1)) &
IF(MINUTE(A1)<10,0&MINUTE(A1),MINUTE(A1))

12hr
=IF(MONTH(A1)<10,0&MONTH(A1),MONTH(A1))&
IF(DAY(A1)<10,0&DAY(A1),0&DAY(A1))&CHAR(10)&
IF(MOD(HOUR(A1),12)=0,12,IF(HOUR(A1)<10,0&HOUR(A1),IF(HOUR(A1)<22,0&HOUR(A1)-12,HOUR(A1)-12)))&
IF(MINUTE(A1)<10,0&MINUTE(A1),MINUTE(A1))&
IF(HOUR(A1)<12,"AM","PM")

http://cdn1.fotopu.com/img/298277-3.png

此帖於 2013-01-04 12:21 AM 被 getter 編輯.
__________________
在「專業主討論區」中的問題解決後,要記得按一下 http://forum.slime.com.tw/images/stamps/is_solved.gif 按鈕喔,
這是一種禮貌動作。

一樣是在「專業主討論區」中發問,不管問題解決與否,都要回應別人的回答文喔。
不然搞 [斷頭文],只看不回應,下次被別人列入黑名單就不要怪人喔。

天線寶寶說再見啦~ ... 天線寶寶說再見啦~

迪西:「再見~ 再見~」

Otaku Culture Party 關心您 ...
getter 目前離線  
送花文章: 37855, 收花文章: 6441 篇, 收花: 26052 次
回覆時引用此帖
向 getter 送花的會員:
leowang (2013-01-04)
感謝您發表一篇好文章