如果满足条件,则从日期值反转日期和月份

时间:2016-04-19 18:04:28

标签: excel vba excel-vba date datetime

我在Excel中有以下两个日期列:

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

如果这两列的日期值和月份值不匹配,且B列的月份与A列的日期匹配,而B列的日期与A列的月份匹配,然后我必须反转B列的日期和月份值。

例如,如果我有:

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

我需要VBA把它变成:

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

我会做类似的事情:

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

我知道那些功能不存在,有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

不需要进行检查。如果A列中的日期保证准确,那么B栏中所需的只是时间部分。

从B列中提取时间部分并将其添加到A列的日期部分。将结果放在您需要的位置。

答案 1 :(得分: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