Страницы: 1
RSS
Пользовательская функция: Расчет ночных и полных часов полета
 
Добрый день!

Понадобилось составить функцию которую прописываем в ячейку и она должна на основании соседних данных высчитать время. В примере лист 2- исходные данные, лист 1 где надо произвести расчет необходимо высчитать время полета общее и ночью. Правильно я передаю в функцию массив, надо определить в начале время взлета/посадки.
 
Тема: Расчет ночных и полных часов полета
Код
Function N()
    Dim Dv As Date, Dp As Date
    Dim nn As Date, kn As Date
    Dim r As Range, k&
    Application.Volatile
    With Application.Caller
    If .Row Mod 2 = 1 Then N = "": Exit Function
        Dv = .Offset(, -11) + .Offset(, -5)    'дата взлета
        Dp = .Offset(1, -11) + .Offset(1, -3)    'дата посадки
        Set r = Sheets(2).UsedRange.Columns(1)
        k = WorksheetFunction.Match(.Offset(, -11), r, 0) - 1    'поиск позиции в r
        nn = .Offset(, -11) + r.Cells(1).Offset(k, 4)    'начало ночи
        kn = .Offset(, -11) + 1 + r.Cells(1).Offset(k, 3)    'конец ночи
    End With
    If Dv <= nn And Dp >= nn Then N = Dp - nn
    If Dv <= nn And Dp >= kn Then N = kn - nn
    If Dv >= nn And Dp <= kn Then N = Dp - Dv
    If Dv >= nn And Dp >= kn Then N = kn - Dv
    If Dv >= kn And Dp <= nn Then N = 0
End Function
 
Маугли, Ваша функция привязана к конкретному столбцу? Такой подход чреват чреватыми последствиями. А если ее нужно будет использовать на столбец (или два) левее/правее? Или таблица с исходными данными будет находиться не на 'Sheets(2)'?
eagl69, Как определяется ночное время? От 'заката' даты вылета до 'рассвета' следующих суток?  
Изменено: Sanja - 22.03.2019 09:10:49
Согласие есть продукт при полном непротивлении сторон
 
Sanja, да у меня все заточено под конкретику. Просто тренировка )
 
Варианты чуть длинней. В столбцах 'Проверка' значения вычисленные вручную
Скрытый текст
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Наверх