引用:
作者: 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")