2016-05-10 26 views
1

セルに日付である文字列がありますが、日付形式に変換する必要があります。Excel VBA - 日付文字列を日付に変換する

彼らは、次の形式になっています。たとえば

mmm dd, yyyy 

Feb 10, 2016 

そこで彼らは、長さが11または12になります

Feb 1, 2016 

私が書き始めています文字列の各部分を個別に解析する関数(日は整数、月は整数、年は整数)を解析して変換します日付形式に変換します。

まず、上記よりもこれを行うには、より簡単/スリッカー方法は何ですか?

もっと簡単な方法が存在しない場合には、最高のは、3文字の月(例えば、2月か月または4月)は月の数(例えば、2または3または4)に変換することでした何ですか?それが唯一のビットなので、私は本当に頑張っています。

+0

形式(「2016年2月10日」、「DDミリメートルYYYY」) –

+0

は、既存のデータは、日付、または日付のように見える文字列を_actually_ですか?あなたは、より精巧な答えのために、次のポストを見てすることがあります –

+0

:http://stackoverflow.com/questions/37100821/change-date-format-using-substitute-or-replace/37101358#37101358 – Ralph

答えて

4

を:cdate("Feb 10, 2016")。機能として
これは次のようになります。

Public Function ConvertToDate(rng As Range) As Date 

    ConvertToDate = CDate(rng) 

End Function 
+0

なぜありません単に 'CDate(rng)'を直接使うのですか? – arcadeprecinct

+1

@arcadeprecinctワークシートからVBA関数を呼び出すことができないため、このようにUDFでラップする必要があります。 –

+0

@arcadeprecinctの意味がわからない、または何か不足していますか? UDFとして、私はあなたがそれ以上それを短縮することができないと確信していません。 –

3

変数Dateを使用して値を読み取り、Format関数を使用して、適切と思われる日付の書式を設定します。

Sub test() 
    Dim D As Date 
    D = Range("A1").Value 
    MsgBox Format(D, "mm/dd/yyyy") 
End Sub 

私は、「2016年2月10日は」メッセージボックスに表示されているA1に文字列「2016年2月10日」を使用してコードを実行した場合

2

これを試してみてください。たとえば

Sub test() 
    MsgBox Month(Datevalue("Feb 10, 2016")) 
End Sub 

これが得られます:2あなたが使用することができVBAで

2

あなたが本当にVBAが必要ですか? Excelには、Text to Date機能=DATEVALUE()が提供されており、2月10日は、と認識されます。

+0

それは本当ですか?私は私の答えを残す前にそれを試して、それは '#VALUE! 'エラーを返しました。 WindowsのMicrosoft Excelでデフォルトの日付システムを使用すると、date_text引数は1900年1月1日から9999_ 12月31日までの日付を表す必要があります。@DATEVALUE( "January 1、1900") ' –

+0

@ DarrenBartrup-Cookこれは地域の設定によって異なります。英国ではその形式は認識されませんでした。 – Rory

+0

ああ、ok。乾杯 - それはなぜそれが認識されなかったのだろう。 –

関連する問題