2016-01-22 81 views
0

我使用從數據庫中提取的某些數據。在一列中,我有一組格式爲dd.mm.yyyy的數據。我正在使用下面的行來嘗試將這些值轉換爲dd/mm/yyyy格式爲日期。VBA - 替換在某些單元格中不起作用

.Range(Columns(j), Columns(j)).Replace What:=".", Replacement:="/" 
.Range(Columns(j), Columns(j)).NumberFormat = "dd/mm/yyyy" 

執行代碼後,所有的內容替換做了,而細胞作爲格式化日期,但有些值左對齊,有些是右對齊。當我在此列中激活過濾器時,有些值每年都不正確(下面的屏幕截圖)。

Column with filter activated

當我去,似乎並不奏效的值(例如,屏幕截圖的第一13/01/2015),它是左對齊。然後,如果我雙擊單元格並按下Enter鍵,單元格就會右對齊。

我已經在這些單元格中尋找額外的字符(例如空格),但沒有找到任何東西。

你對這個問題有什麼想法嗎?

PS:我的英語不好對不起,我是來自巴西(:

+0

什麼是您的默認日期格式?如果是m/d/yyyy,那麼Excel將嘗試使用默認格式解釋13/01/2015,這將失敗(因爲月份> 12),因此該值不會被識別爲日期。 –

+0

這是dd/mm/yyyy。葡萄牙語是我的默認語言。但是你對這個問題是正確的:Excel正在考慮將值設置爲mm/dd/yyyy,並嘗試將其轉換爲dd/mm/yyyy。但我不知道爲什麼會發生這種情況。 – tortoise

回答

1

文本列可用於將日期從一種格式轉換爲另一種手動轉換,你會選擇範圍,單擊文本。選擇「日期」並指定數據所在的日期,月份和年份的順序,然後單擊確定。

當然,使用VBA也可以做到這一點。 up宏記錄器,按照上面的步驟並研究生成的代碼。

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ 
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ 
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, OtherChar _ 
    :="", FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True 
+0

非常感謝!完美工作! (: – tortoise

0

通常情況下,如果將日期格式設置爲文本,就會發生這種情況。我有我用它來殺死那些格式問題一招:

  1. 選擇整列
  2. 轉到選項卡DATA
  3. 點擊TEXT TO COLUMN
  4. 選擇Delimited,然後單擊下一步
  5. 全部取消選中框和點擊完成
  6. 選擇整列
  7. 格式化爲短日期