2016-04-19 24 views
0

I、次の2つの日付Excelの列があります。反転日と月

A      B 
DD-MM-YYYY    DD-MM-YYYY HH:MM 

日の値と、これらの二つの列の月の値が一致しない場合があり、 B列の月とA列の日が一致し、B列の日がA列の月と一致する場合、B列の日と月の値を逆にする必要があります。

For j=1 to Range("A1").End(xlDown).Row 
    If ExtractDate(Cells(j, 2)) <> Cells(j, 1) And ExtractMonth(Cells(j, 2)) = ExtractDay(Cells(j, 1) And ExtractDay(Cells(j, 2)) = ExtractMonth(Cells(j, 1) Then 
    InvertDayAndMonth(Cells(j, 2) 
    End if 
Next j 

私はそれらのことを知っている:私はのような何かをするだろう

A      B 
04-10-2016    04-10-2016 22:10 

A      B 
04-10-2016    10-04-2016 22:10 

私はVBAを変換しますことを必要とする:私が持っている場合たとえば

、関数が存在しない、誰かが私を助けてくれる?

+0

。 DMYとMDYの問題は頭痛です。 2011年7月4日は解決できないため、2013年7月4日はテキストとして表示されますが、2016年7月4日は間違って解決されるため2016年7月4日になります。 [文字列をVBAに変換](http://stackoverflow.com/questions/31805453/convert-string-to-date-vba/31805582?s=1|0.0000#31805582)を参照してください。 – Jeeped

答えて

0

は、私はそれを解決するためにやったことです:私は適切でオフを開始する日付をインポートすることをお勧め

For j = 3 To Range("A1").End(xlDown).Row 

If Day(Cells(j, 2).Value) = Month(Cells(j, 3).Value) And Month(Cells(j, 2).Value) = Day(Cells(j, 3).Value) Then 
    d = Cells(j, 3).Value 
    Cells(j, 3) = DateSerial(Year(d), Day(d), Month(d)) + TimeSerial(Hour(d), Minute(d), Second(d)) 
End If 

Next j 
0

実際にチェックを行う必要はありません。列Aの日付が正確であることが保証されている場合、列Bから必要なのは時間部分だけです。

列Bの時間部分を抽出し、列Aの日付部分に追加します。結果を必要な場所に配置します。ここで