返回列表 上一主題 發帖

[發問] 日期問題

[發問] 日期問題

各位先進
我用web資料會匯入excel裡
因為有日期欄位
可是在excel顯示卻很奇怪
因為匯入資料是民國的99年
可是在EXCEL裡竟然顯示1999年
是出了什麼問題?
可以告訴我嗎?

本帖最後由 luhpro 於 2010-8-7 00:01 編輯

回復 1# shadowming

這是因為 Excel 是英語系(使用西元年份)的國家所做出來的東西,
所以設計上都是以西方人使用上方便為主,
當你輸入 99/4/5 時,
系統是當做一個西方人在使用日期的簡易輸入方式,
也就是想輸入 '99/4/5 省略了前面的 19 ,
故而 Excel 會自動在前面加上 19 就變成 1999/4/5 了.

實務上我們想讓日期能正常顯示的話,
就要在將日期傳給儲存格前先把年份加上 1911 變成 2010/4/5 才能傳給儲存格,
另外也可以直接將 日期的 serial number [即DATEVALUE(99/4/5)] + 4018 傳給儲存格後再將顯示格式改成日期即可.

TOP

回復 2# luhpro

直接將 日期的 serial number [即DATEVALUE(99/4/5)] + 4018 傳給儲存格後再將顯示格式改成日期即可.

我照您說得方法這樣下去做
可是只要我現上更新資料
會再變回原值
是哪裡錯了?

TOP

更新資料就是覆蓋資料公式就沒了
學海無涯_不恥下問

TOP

回復 3# shadowming

依你上面說的情形我猜想你應該是在程式自動給值後再用手動去修改內容成你要的結果,
這樣下次程式給值後自然還是要再次經過 "手動" 去修改內容才會正確囉.

我想你可以先用程式將值丟到別的儲存格,
在透過中繼儲存格上個別公式計算,
最後再於原先要給值的儲存格上取引用算出來的值.

另一個方式就是在程式給值前就做好計算工作(如下述程式),
再將程式算好的值丟過去即可.
Sub test()

  Dim sDate$
  
  sDate = "99/4/8"
  sDate = eDate2cDate(sDate)

End Sub


Function eDate2cDate(sDate As String) As String

  Dim iYear, sMonth$, sDay$
  
  iYear = Year(sDate)
  sMonth = Month(sDate)
  sDay = Day(sDate)
  
  iYear = iYear + 11
  eDate2cDate = DateSerial(iYear, sMonth, sDay)

End Function

你可以開一個新的Excel檔, 新增一個模組,再貼上上述程式,
將游標指定在 Sub 區塊內後按 F8 按鍵以單步模式執行,
然後觀看 "區域變數" 視窗中各變數的值即可得知各函數的作用.

TOP

回復 5# luhpro

了解
可以用了
謝謝幫忙解答
也感謝板大來看看

TOP

        靜思自在 : 不要隨心所欲,要隨心教育自己。
返回列表 上一主題