我有一批包含幾列的數據,其日期格式如下:
2014 年 5 月 31 日。
我正在嘗試找出一種方法將其轉換為有用的日期格式 05/31/2014。有任何想法嗎?
答案1
有幾個步驟可以實現這一目標。這是使用公式和輔助單元格來完成此操作的一種方法。如果您需要在沒有輔助單元的情況下執行此操作(即您不需要額外的列),那麼您應該提及這一點,我可能可以編寫一些 VBA 來完成該任務。
第一個任務是將日期分為 3 個部分:年、月、日。一旦你擁有了這三個,那麼將其重新組合起來就很簡單了。
這當然是假設你的日期總是遵循相當愚蠢的美國日期格式© MMM-dd-yyyy。
這是使用 Microsoft 頁面完成的使用函數在列之間拆分文本舉個例子。
分割月份:
這是透過使用search
尋找第一月份的功能和將其剪切出來的-
分割工具來實現的。Left
=LEFT(A1, SEARCH("-",A1,1)-1)
May
從你的例子中返回。Splitting out the day:類似,但需要
更複雜地使用該功能。MID
我們需要找到第一個和第二個-
,然後用第二個減去第一個的位置來得到所需文本的長度,這個結果是一個相當長的函數:=MID(A1,SEARCH("-",A1,1)+1,SEARCH("-",A1,SEARCH("-",A1,1)+1)-SEARCH("-",A1,1)-1)
返回
SEARCH("-",A1,SEARCH("-",A1,1)+1)-SEARCH("-",A1,1)-1)
長度,而SEARCH("-",A1,1)+1
只是獲取第一個位置。該MID
工具會將它們切掉並23
從您的範例中返回。劃分年份:
我們需要的最後一個工具是RIGHT
工具。=RIGHT(A1,LEN(A1)-SEARCH("-",A1,SEARCH("-",A1,1)+1))
這只是獲取字串的長度,然後搜尋兩次並返回左側(或右側)的所有內容。
現在的問題是您仍然擁有無法使用的文字格式的月份。為了使其可用,我們需要使用DATEVALUE
工具對其進行轉換。該工具本身不接受月份,但會接受字串MMM YY
。我們能做的就是在將年份連接到月份文字後將其解析為數字。
以數值形式取得月份:
為了方便論證,假設我們將第一個函數儲存在儲存格 B1 中。
DATEVALUE(B1 &" 01")
將返回 excel 內部使用的日期值字串,然後我們可以將其包裝在函數中MONTH
以返回月份的數值:MONTH(DATEVALUE(B1 &" 01"))
然後,我們可以將所有這些合併到一個
DATE(year,month,day)
函數中,從而將其轉換為 Excel 可以使用的真實日期。月份位於儲存格 B1 中,日期位於儲存格 C1 中,年份位於 D1 中,遵循愚蠢的美國日期格式™:DATE(D1, B1, C1)
然後將返回
23/05/2014
牢房。如果您想要真正喜歡,您可以繼續將上述所有公式合併為一個。
=DATE(RIGHT(A1,LEN(A1)-SEARCH("-",A1,SEARCH("-",A1,1)+1)),MONTH(DATEVALUE(LEFT(A1, SEARCH("-",A1,1)-1)&" 1")),MID(A1,SEARCH("-",A1,1)+1,SEARCH("-",A1,SEARCH("-",A1,1)+1)-SEARCH("-",A1,1)-1))
答案2
另一種簡單的方法是採用類似的字串2015 年 5 月 31 日並將其轉換為2015 年 5 月 31 日。這種轉換將允許我們使用日期值()公式。
所以數據在A1, 在B1進入:
=DATEVALUE(SUBSTITUTE(MID(A1,FIND("-",A1)+1,2),"-","") & "-" & LEFT(A1,3) & "-" & RIGHT(A1,4))
答案3
我知道問題已經得到解答,我感謝所有的意見。我想添加這個其他選項,以防萬一任何人有幫助:
=DATEVALUE(CONCATENATE(MID(A1,5,2),"-",LEFT(A1,3),"-",RIGHT(A1,4)))
這會將日期從 May-31-2014 格式轉換為 5/31/2014 格式。請注意,在我的具體情況下,僅使用三個字母輸入月份(例如 Jul)
謝謝!