2017-07-28 10 views
2

私は小さなテーブルを管理して外部テーブルから変換しています.yyyy/mm/dd 私が本当に必要なのは、A1から日付を変換し、私は列A1とB1に使用されますtamplateとしてVBA Excelの日付yyyy/mmm/ddからyyyy/mm/ddへ

をB2にそれを貼り付けることである:B1を変換する A1 =日= DAT

    を変換するDestinatonを貼り付け
  • a1
  • 2012.Jan.04
  • 2012.Nov.04
  • 2012.Dct.04

    • B1
    • 04.01.2012
    • 2012年4月11日私が今あるのためのテストは何
    • 2012年4月12日

  1. (作成した辞書)に変換する式 - 日付の変換のために
  2. VBAを変換するために、多くの日付の場合 で使用することはできません - 正しい日付 としてA1からの私の日付を見ると何も
  3. フォーマットにこれを行うことはできませんExcelで日付ビルドで機能「整形」を - 何も
  4. を行いません。また、「テキストから列が」テストされた機能 - それでも私は本当にシンプルなものにこだわってみたいが見ている何も

もしませんしかし、今のところ進んでいくのは本当に難しいので、これが私が助けを求めて

ありがとうございます。

答えて

2

私はB1に次の式を使用します。

=DATE(LEFT(A1,4),MATCH(MID(A1,6,3),{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dct"},0),RIGHT(A1,2)) 

奇妙に見えるどのような12月の略称「DCT」です。だから多分あなたの言語に応じて配列リテラル{"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dct"}を変更する必要があります。 FunctionVBAを使用して

を使用することができる:

Function convert_YYYY_MMM_DD_Text2Date(sText As String) As Variant 
Dim iYear As Integer 
Dim iMonth As Integer 
Dim sMonth As String 
Dim iDay As Integer 
Dim aMonths As Variant 
Dim bFound As Boolean 

aMonths = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dct") 

On Error GoTo errHandler 
iYear = CInt(Left(sText, 4)) 
sMonth = Mid(sText, 6, 3) 
iDay = CInt(Right(sText, 2)) 

For iMonth = 0 To UBound(aMonths) 
    If aMonths(iMonth) = sMonth Then 
    bFound = True 
    Exit For 
    End If 
Next 

If bFound Then 
    convert_YYYY_MMM_DD_Text2Date = DateSerial(iYear, iMonth + 1, iDay) 
Else 
    GoTo errHandler 
End If 

On Error GoTo 0 

Exit Function 

errHandler: 
convert_YYYY_MMM_DD_Text2Date = "conversion not possible" 

End Function 
+0

作品パーフェクト。ときには数式があなたがそれらでできることを驚くほどにします。 – Moosli

+0

はい、それは働いており、ありがとうございます。しかしあなたの意見は何ですか?何がより速く動作しますか。私の日付で〜10000行のVBAコードまたはこの数式ですか? 私のproccesは次のようになります。 vbaは他のブックからデータを取得してから、それをoutlookカレンダーにアップロードすることができる適切な列に変換します。 すべてのコードはこの日付の変換ステップなしで動作しています。もちろん、私が最良の解決策を見つけることができない場合は、私が提案するような公式を使用します。 ご支援いただきありがとうございます。 –

+0

文字列( "YYYY.MMM.DD")を取り、日付またはエラー文字列を返す 'VBA'関数を補足しました。 –

関連する問題