2016-01-12 23 views
4

我有一個Excel表格,其中列的日期日期格式爲"yyyyMMdd",我想將其格式設置爲"yyyy/MM/dd"在Excel中更改日期格式使用

爲此,我嘗試在宏內使用以下代碼行,但它將單元格數據轉換爲「### .....#」而不是更改日期格式。

Sheet1.Range("C3", "C302").NumberFormat = "yyyy/mm/dd" 
... 
result = "#####...#" 
... 

有人能告訴我爲什麼會發生這種情況嗎?有沒有其他的方式來做到這一點?

回答

3

與所有的很好的答案,我會添加簡單的VBA解決方案...

Option Explicit 
Sub FormatDate() 
    Dim xlRng As Range 
    Dim xlShtRng As Range 

    '//- Date format 20160112 
    Set xlShtRng = [A3:A10] '//- or [A3, A6, A10] 

    For Each xlRng In xlShtRng 
     xlRng.Value = DateSerial(Left(xlRng.Value, 4), Mid(xlRng.Value, 5, 2), Right(xlRng.Value, 2)) 
     xlRng.NumberFormat = "yyyy/mm/dd" '//- 2016/01/12 
    Next 
End Sub 
4

如果日期/時間單元格出現滿#號,則意味着該列太窄而無法顯示格式。

使列變寬以適應所選日期格式的全部寬度。

看到這個截圖。兩列具有相同的格式。 A列太窄而無法顯示日期。 B列足夠寬。在聊天討論後

enter image description here

編輯:

你在聊天中發佈的屏幕截圖是這樣的: enter image description here

的「日期」你指的是不是日期。它們的數字遠高於Excel在這個千年中用於日期的數字。

Excel將日期存儲爲整數,從1/1/1900開始。您在屏幕截圖中顯示的數字比Excel日期更高。

enter image description here

您的號碼20150930是不是Excel中認爲九月30-2015。對於Excel,該日期將是數字42277,您可以完美格式化爲該日期。

您的格式字符串格式化的「日期」出現爲#####的原因是數字高於Excel可以解釋爲日期的方式。

您需要將您的數字轉換爲真正的Excel日期,您可以使用一個簡單的公式來完成。在A1單元格你的第一個「約會」號,你可以用公式

=DATE(LEFT(A1,4),MID(A1,5,2),RIGHT(A1,2)) 

返回一個值,Excel的問候在這個截圖一個真正的日期09月-30-2015:

enter image description here

所以,所有#號的原因是,您試圖格式化爲日期的數字對於Excel算法中的日期來說太大了。

+0

我試圖增加列的寬度。但是對於所有寬度,它只顯示「##### ... ###」。:( – Madhusudan

+0

什麼是您的自定義格式化字符串?如果格式化字符串導致錯誤,#號將保持。 – teylyn

+0

它顯示「yyyy/mm/dd」/檢查右鍵單元格 - >單元格填充 - >自定義。顯示「yyyy/mm/dd」,但在sample子句的同一個窗口顯示字符串「########## ... ##」 – Madhusudan

2

請試試這個..

=LEFT(A1,4)&"/"&MID(A1,5,2)&"/"&RIGHT(A1,2)