1. Почему-то не правильно отображается вместо 16.02.2015 показывает 06.02.2015; 2. А как сделать, чтобы понимало какую из двух дат выбирать Мне бы макросом.
1. Почему-то не правильно отображается вместо 16.02.2015 показывает 06.02.2015; 2. А как сделать, чтобы понимало какую из двух дат выбирать Мне бы макросом.bosse-sl
Function Как_получить(Время As Date, Дата As Range) As Date Dim a, i& a = Split(Дата.MergeArea.Cells(1, 1).Value) Время = IIf(Время - Int(Время) > 20 / 24 And Время - Int(Время) < 8 / 24, Время - Int(Время) + 1, Время - Int(Время)) For i = 0 To UBound(a) If IsDate(a(i)) Then Как_получить = Format(CDate(a(i)) + Время, "DD.MM.YYYY h:mm") Exit Function End If Next End Function
Function Как_получить(Время As Date, Дата As Range) As Date Dim a, i& a = Split(Дата.MergeArea.Cells(1, 1).Value) Время = IIf(Время - Int(Время) > 20 / 24 And Время - Int(Время) < 8 / 24, Время - Int(Время) + 1, Время - Int(Время)) For i = 0 To UBound(a) If IsDate(a(i)) Then Как_получить = Format(CDate(a(i)) + Время, "DD.MM.YYYY h:mm") Exit Function End If Next End Function
1. Если правильно понимаю, то это можно использовать и как часть макроса? 2. У меня почему-то в тексте выбирает только первую дату из двух, где есть две даты
1. Если правильно понимаю, то это можно использовать и как часть макроса? 2. У меня почему-то в тексте выбирает только первую дату из двух, где есть две датыbosse-sl
Если правильно понимаю, то это можно использовать и как часть макроса?
Можно, как вариант
[vba]
Код
Sub Conversion() Dim Rn As Range, C As Range, dat As Date Set Rn = Range(Cells(3, 2), Cells(Rows.Count, 2).End(xlUp)) For Each C In Rn Как_получить C.Value, C.Offset(0, 1), dat C.Offset(0, 4) = dat C.Offset(0, 4).NumberFormat = "DD.MM.YYYY h.mm" Next End Sub
Private Function Как_получить(Время As Date, Дата As Range, dat As Date) As Date Dim a, i& a = Split(Дата.MergeArea.Cells(1, 1).Value) Время = IIf(Время - Int(Время) < 8 / 24, Время - Int(Время) + 1, Время - Int(Время)) For i = 0 To UBound(a) If IsDate(a(i)) Then dat = CDate(a(i)) + Время Exit Function End If Next End Function
Если правильно понимаю, то это можно использовать и как часть макроса?
Можно, как вариант
[vba]
Код
Sub Conversion() Dim Rn As Range, C As Range, dat As Date Set Rn = Range(Cells(3, 2), Cells(Rows.Count, 2).End(xlUp)) For Each C In Rn Как_получить C.Value, C.Offset(0, 1), dat C.Offset(0, 4) = dat C.Offset(0, 4).NumberFormat = "DD.MM.YYYY h.mm" Next End Sub
Private Function Как_получить(Время As Date, Дата As Range, dat As Date) As Date Dim a, i& a = Split(Дата.MergeArea.Cells(1, 1).Value) Время = IIf(Время - Int(Время) < 8 / 24, Время - Int(Время) + 1, Время - Int(Время)) For i = 0 To UBound(a) If IsDate(a(i)) Then dat = CDate(a(i)) + Время Exit Function End If Next End Function
Michael_S, подскажите пожалуйста, можно ли при помощи функции которая приведена выше добывать даты, но не из диапазона ячеек а всего из одной ячейки, т.е. двух конечно 1-дата 2-время
[/vba] - как-то так Или может быть: Вытащить даты в переменные d1 и d2
[spoiler][vba]
Код
If Not IsEmpty(Cells(i, 3)) Then 'проверяю ячейку есть ли там дата dat = .Cells(i, 3).Value If .Count >= 1 Then d1 = CDate(.Item(1)) If .Count >= 2 Then d2 = CDate(.Item(2)) Else d2 = 0
If d2 = 0 Then DateOffLoad = d1 Else DateOffLoad = IIf(.Cells(i, 2) < #8:00:00 AM#, d2, d1) End If
[/vba] Помогите пожалуйста.
Michael_S, подскажите пожалуйста, можно ли при помощи функции которая приведена выше добывать даты, но не из диапазона ячеек а всего из одной ячейки, т.е. двух конечно 1-дата 2-время
[/vba] - как-то так Или может быть: Вытащить даты в переменные d1 и d2
[spoiler][vba]
Код
If Not IsEmpty(Cells(i, 3)) Then 'проверяю ячейку есть ли там дата dat = .Cells(i, 3).Value If .Count >= 1 Then d1 = CDate(.Item(1)) If .Count >= 2 Then d2 = CDate(.Item(2)) Else d2 = 0
If d2 = 0 Then DateOffLoad = d1 Else DateOffLoad = IIf(.Cells(i, 2) < #8:00:00 AM#, d2, d1) End If