У меня есть следующие два столбца даты в 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

Я знаю, что этих функций не существует, может ли кто-нибудь мне с этим помочь?

0
N. Pavon 19 Апр 2016 в 21:04

2 ответа

Лучший ответ

Вот что я сделал, чтобы решить эту проблему:

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
N. Pavon 20 Апр 2016 в 16:43

Нет необходимости проводить проверку. Если дата в столбце A гарантированно точна, тогда все, что вам нужно в столбце B, - это временная часть.

Извлеките часть времени из столбца B и добавьте ее к части даты столбца A. Поместите результат там, где он вам нужен.

0
ojars 20 Апр 2016 в 01:12