2016-04-12 33 views
-1

這是我的日期值Mar 30 2016 4:46:34:256PM我想刪除時間使其像這樣Mar 30 2016VBA - 如何刪除一個範圍單元格中的字符串

我已經試過各種方法格式化這個值是否與格式mm-dd-yyyymm-dd-yyyyyyyy-mm-dd etc。它的工作,但如果嘗試這個Mar 30 2016 4:46:34:256PM作爲價值它不工作。有人可以告訴我爲什麼嗎?

我試過一個簡單的代碼來測試所有的格式,但它不使用該值Mar 30 2016 4:46:34:256PM工作,所以我決定撤銷4:46:34:256PM那就是我得到的股票....

Sub formateDate() 
Dim lastrow As Long 

lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row 

For i = 2 To lastrow 

Cells(i, 2).NumberFormat = ("dd-mm-yyyy") 
Next i 
End Sub 
+0

我不確定我是否理解。 'Mar 30 2016 4:46:34:256PM'是一個實際的日期還是一個字符串?如果Excel無法將文本識別爲日期,則無法更改其格式。要麼確保在單元格中輸入實際日期,然後格式化它們,要麼只需使用文本和日期函數即可提取日期。 – vacip

+1

驗證(如@vacip建議)檢查「Cells(i,2).Value2」。如果它是一個數字,那麼這些日期被存儲爲日期,你可以使用'.NumberFormat'格式化它們。如果情況並非如此,並且您爲'.Value2'返回一個字符串,那麼您必須首先從字符串中提取日期(噩夢)。 – Ralph

+0

@vacip它的實際日期,但即時將它定義爲範圍,所以我可以使用* NumberFormat * – 7A65726F

回答

2

從你的榜樣,你似乎有一年號碼後連續兩個空格

它應該永遠是那麼你可以去像如下

Cells(i, 2) = Left(Cells(i, 2), InStr(Cells(i, 2), " ") - 1) 

,然後你也可以爲它分配日期格式,因爲IsDate如果在結果值上調用WorksheetFunction返回True

+0

感謝您的回答,我會去嘗試一次,我回家 – 7A65726F

+0

VBA有這種格式'hh:mm:ss:SSSa'? – 7A65726F

+0

你有什麼需要?您可以通過解析和連接字符串來構建任何格式的字符串。但是,如果您希望Excel將其識別爲時間格式,則必須在數字格式菜單中查找它。除此之外,如果我的解決方案回答了您的問題,請將其標記爲已接受。謝謝 – user3598756

相關問題