2012-10-18 25 views
1

甲報告服務生成csv文件和某些列(奇怪的是)具有混合的日期/時間的格式,某些行含有日期時間表示爲M/d/Y,其餘爲DMY定影MS Excel的日期時間格式

當應用= TYPE()它將返回1或2(Excel將識別文本或數字(Excel時間戳))

如何將任何一種錯誤的日期時間格式轉換爲「正常」格式可以使用並確保數據的一致性?

我在這一刻想到的2個解決方案:

  • 我應該以某種方式處理與現有的Excel功能的奇數據
  • 我應該問的報告中從一開始就正確生成,避免此麻煩擺在首位

感謝

+0

您正處於正確的軌道上!先嚐試第2點。如果失敗,請編寫一個公式來轉換不需要的日期格式! Excel有很多選項。 –

+0

如果在記事本中打開CSV文件,日期是否不一致,或者在Excel中打開文件時發生這種情況?可能是Excel預期日期(例如)m/d/y,但是您的文件的日期爲d/m/y。 Excel將轉換它的內容(當「d」<= 12時,它被視爲一個月)並將其他文本保留爲文本。 –

+0

Tim,我使用記事本檢查了csv,它包含不同格式的行,m/d/y和dmy,令我擔憂 –

回答

1

當然你的第二個選擇是在中期至長期的路要走。但是,如果你需要一個解決方案,現在,如果你有機會到一個文本編輯器,它支持Perl兼容的正則表達式(如記事本++,UltraEdit的,的EditPad臨等),你可以使用下面的正則表達式:

(^|,)([0-9]+)/([0-9]+)/([0-9]+)(?=,|$) 

搜索格式爲m/d/y的所有日期,並以逗號(或在行首/結尾)包圍。

替換與

\1\3.\2.\4 

,你會得到的日期格式d.m.y

+0

兩種解決方案都可以使用 –

1

如果你不能得到再變數據,你可能不得不求助於另一列轉換日期:(假設你要更改日期在A1)

=IF(ISERR(DATEVALUE(A1)),DATE(VALUE(RIGHT(A1,LEN(A1)-FIND(".",A1,4))),VALUE(MID(A1,FIND(".",A1)+1,2)),VALUE(LEFT(A1,FIND(".",A1)-1))),DATEVALUE(A1)) 

它測試,看是否它可以將文本作爲日期讀取,如果失敗,則會將該字符串截斷並將其轉換爲日期,否則將嘗試直接讀取日期。無論哪種方式,它應該將其轉換爲您可以使用的日期

+0

您的兩種解決方案都可以,但不幸的是,接受兩個答案 –