應始終着眼於轉換的東西,看起來像一個日期爲日期。日期將始終保持一個日期,您可以以任何您想要的格式顯示它。它甚至可以在從一種語言到另一種語言的過渡中倖存
所以,如果你的來源是一個日期,你很好。如果它是一個字符串,我這樣做:
- 使用= DATEVALUE()...如果月份名稱在系統語言,這將工作
- 轉換源字符串,如果臨時更改系統語言是不是一個選項,接下來將是= DATE(yy,mm,dd),其中參數必須使用= LEFT(...),= MID(...),= RIGHT(...)創建
最終你必須月份名稱從一種語言轉換成另一種像下面的例子:
A1包含JANFEBMAR...
A2包含JÄNFEBMÄR...
換算公式=MID(A2;FIND("MAR";A1);3)
編輯在回答凱爾的評論:
除了這個事實,德國(奧地利)區域會馬上認出這串作爲一個日期,讓我們把問題分成咀嚼片。您的日期字符串在A1
- asumed時間部分很簡單:它是一個附加項
TIMEVALUE(RIGHT(A1;8))
分裂我們在動態位置對分隔符打日期。定界符的位置可以通過
2A)=FIND("/";A1;1)
找到...找到第一分隔符
2b)中=FIND("/";A1;4)
...第二分隔符的位置,asuming第一圖形可以是僅1或2個字符的和無空格前 - 或者我們必須更換常數「4」的項(2A)+1
2C)=FIND("/";A1;FIND("/";A1;1)+1)
......更安全的版本(2B)
現在我們已經準備好來構建我們留下的東西最中期和右側的
3A)=LEFT(A1;FIND("/";A1;1)-1)
... 第一數字 ...(2A)-1長度
3B)=MID(A1;FIND("/";A1;1)+1;FIND("/";A1;FIND("/";A1;1)+1)-FIND("/";A1;1)-1)
... 第二數字 ...開始:=(2a)的1,NUM_CHARS =(C) - (2A)-1
3C)=MID(A1;FIND("/";A1;FIND("/";A1;1)+1)+1;4)
... 3圖 ...開始:=(2C)+1,NUM_CHARS = 4 - asuming年始終是4位數。更抽象的情況下將是一個(3b)的與(2C)是用於一個=FIND()
第一坯料
如何解釋尤其是第一和第二數字(即MM/DD或DD/MM)是可達您。
現在了有趣的部分,即連接所有這些公式爲一個怪物來獲得日期
4a)的通過輸入= DATE(1開始; 2; 3)
4b)的取代通過1(3c)中,由2(3b)中,由3(3A)...不要複製前導 「=」
4C)=DATE(MID(A1;FIND("/";A1;FIND("/";A1;1)+1)+1;4);MID(A1;FIND("/";A1;1)+1;FIND("/";A1;FIND("/";A1;1)+1)-FIND("/";A1;1)-1);LEFT(A1;FIND("/";A1;1)-1))+TIMEVALUE(RIGHT(A1;8))
你看不到時間,只有日期! ....請記住給出一個顯示日期和時間的自定義單元格格式,即「DD.MM.YYYY hh:mm:ss」
好的......這個公式是絕對不可讀和不可理解的,所以你可能會想要在(臨時)字段/列中顯示中間結果。
而且這個公式只有在輸入字符串或多或少嚴格格式化時才能使用。它可以處理第一和第二個數字中的一些空白,但從YYYY開始變得棘手。然後,其他概念需要被包括在內,像所有其他人之前=SUBSTITUTE(A1;" ";"")
刪除所有空白,等等,等等
提示:我一直在構建複雜的公式是這樣的:分離單個細胞的條款,後來他們合併一個大公式
問題是:是從其他地區輸入的數據作爲「日期」還是字符串? – MikeD
我在猜測它的字符串。數據從Web界面導出,所以我無法確定它是否以字符串或日期導出。由它的外觀..它似乎是字符串 – Kyle
進入一個空單元格,並嘗試添加1日期。你會得到一個數字結果......這是一個日期......你得到一個#VALUE錯誤......'不是一個字符串;-)我不是說挑剔......但它決定了你的策略想要使用.... – MikeD