2016-04-04 41 views
1

日付のある列を含むファイルを開くと、Excelはこれらのセルを日付として認識しません。セルの日付は次のようになります。31-Mar-16 23:51Excelの日付が日付として認識されない

これは問題を解決しませんが、テキストと列と日付の値で試しました。また、私はこの記事をお読みください。

String was not recognized as a valid date time

それでも私は問題を抱えています。

ファイルは英国からのものです。私のコンピュータの地域設定は、言語はオランダ語、キーボードは米国です。地域設定を英国に設定してファイルを再オープンしても、日付はまだ認識されません。 Excelはそれをテキストと見なします。

一部のテキストの編集では、31-Mar-16 23:51から31-Mar-16までを置き換え、3を3で置き換えることができます。この場合、問題は解決しますが、定期的なファイル

これを解決するには誰にも良い方法がありますか?

ありがとうございます!

+1

を参照してください** **は、あなたが問題を開いを持つべきではありませんさかのぼります。元のファイルにテキストとして保存された日付が含まれている場合は、現在のロケール(または一時的に選択されたロケール)と一致する月名と日付と時刻の区切り文字を検索/置換する必要があります。厳しい場合には、最後の文字列を実際の日付にサニタイズするために '= VALUE()'を使用するステップがもう1つあります。 – MikeD

+0

ありがとうマイク。確かに、ファイルに日付がテキストとして格納されているとします。 2月は2月が英語のようにオランダ語であるため、2月は問題ありませんが。 2月の日付は日付として認識されます。 – Marcel

+1

私は、VBA DateValueまたはCDateが返すもの(ワークシートDATEVALUEではなく)を知ることに興味があります。 – Jeeped

答えて

0

ロケール設定のために月の略語が認識されないと思われます。その場合は、悪党のセルを選択し、このマクロを実行:マクロは単にUDF()の配列を変更することにより、任意の言語の省略形に適合させることができること

Sub DateFixer() 
    Dim r As Range, t As String 
    Dim dy As Long, mont As Long, yr As Long, hr As Long, minn As Long 
    For Each r In Selection 
     t = r.Text 

     ary = Split(t, " ") 
     bry = Split(ary(0), "-") 
     cry = Split(ary(1), ":") 

     dy = CLng(bry(0)) 
     mont = mnth(bry(1)) 
     yr = 2000 + CLng(bry(2)) 

     hr = CLng(cry(0)) 
     minu = CLng(cry(1)) 
     r.NumberFormat = "General" 
     r.Value = DateSerial(yr, mont, dy) + TimeSerial(hr, minu, 0) 
    Next r 
End Sub 

Public Function mnth(st) As Long 
    Dim sMth 

    sMth = Array("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec") 
    With Application.WorksheetFunction 
     mnth = .Match(st, sMth, 0) 
    End With 
End Function 

注意。

+0

あなたのソリューションの両方に感謝します。両方のソリューションはうまくいきますが、まだ回避策が必要です。私のファイルに日付フィールドが含まれていないので、これが必要であるということを正しく理解していますか?私は、私のPC設定をある方法で変更することで問題を解決できることを願っていました。私はファイルをアップロードしてあなたを見せます。マクロはかなり使い勝手が良いので、どんな場合でもありがとう。 – Marcel

+0

ps:Excelファイルをアップロードする方法がわかりません。 – Marcel

0

enter image description here

使用、さらに=LEFT()=MID()=RIGHT()は、ソースの日付を分解し、に従って正しい日付を構成するために...あなたがそうのよう=FIND()=MID()機能を使用することができ、VBAせずに数ヶ月を変換するにはあなたのルール日付が内部的に数値として格納され、お使いのPCのロケール設定を使用して、あなたに提示されているので -

あなたが受け取ったExcelが実際に含まれている場合もExcel using date/time with multiple different region formats. VB? Formulas?

関連する問題