![](/img/trans.png)
[英]Excel VBA : Convert date format from YYYY-MM-DD-HH.MM.SS.Milli to DD/MM/YYYY HH:MM:SS
[英]how to change the date format of a cell displayed as yyyy/mm/dd hh:mm:ss in VBA
我有一列日期以 yyyy/mm/dd hh:mm:ss 格式顯示。 我想更改該列的日期格式。 我正在嘗試插入另一列並使用格式將該列的數據復制到新列中。 請在我的代碼下面找到。
last_Row = Worksheets("sheet1").Range("A65536").End(xlUp).Row
Worksheets("sheet1").Range("B1").EntireColumn.Insert
For i = 2 To last_Row
lfd_value = Worksheets("sheet1").Range("C" & i).Value
lfd_val_upd = Format(lfd_value, dd/mm/yyyy)
Worksheets("sheet1").Range("B" & i).Value = lfd_val_upd
Next i
您應該用以下內容替換您的格式:
lfd_val_upd = Format(lfd_value, "dd/mm/yyyy")
或者,如果您的日期未格式化為日期,則以下內容應該有效:
lfd_val_upd = Format(CDate(lfd_value), "dd/mm/yyyy")
編輯:
嘗試以下代碼,我已經對其進行了測試並且對我2018/02/01 12:05:00
我嘗試的示例日期是2018/02/01 12:05:00
:
Sub foo()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column B
ws.Range("B1").EntireColumn.Insert
For i = 2 To LastRow
lfd_value = ws.Range("C" & i)
lfd_val_upd = Format(CDate(lfd_value), "dd/mm/yyyy")
ws.Range("B" & i).Value = lfd_val_upd
Next i
End Sub
更新:
另一種可能性是您的日期格式不正確,以下內容將選擇單元格內容的一部分,然后將它們部分轉換為日期並將該日期作為文本輸入到 B 列中:
Sub foo2()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
'declare and set your worksheet, amend as required
LastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
'get the last row with data on Column A
ws.Range("B1").EntireColumn.Insert
For i = 2 To LastRow
yearnumber = Mid(ws.Cells(i, 3), 7, 4)
monthnumber = Mid(ws.Cells(i, 3), 4, 2)
daynumber = Left(ws.Cells(i, 3), 2)
LValue = DateSerial(yearnumber, monthnumber, daynumber)
lfd_val_upd = Format(CDate(LValue), "dd/mm/yyyy")
ws.Cells(i, 2).NumberFormat = "@"
ws.Range("B" & i).Value = lfd_val_upd
Next i
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.