Будьте добры, как вычислить выслугу лет в таблице, если она состоит из нескольких периодов? Нашел формулу на один период, но суммировать не выходит! Файл прилагается!
Будьте добры, как вычислить выслугу лет в таблице, если она состоит из нескольких периодов? Нашел формулу на один период, но суммировать не выходит! Файл прилагается!Alexandr_VB
Делал когда-то в другой теме. Вычисление идет по формуле: каждые 30 дней - месяц, каждые 12 месяцев - год[vba]
Код
Function СТРАХОВОЙ_СТАЖ(Дата_Начала As Range, Дата_Окончания As Range, Optional Часть As String = "") As String Dim Interval As Long, Y As Long, M As Long, D As Long, I As Long Dim S_arr, E_arr If Дата_Начала.Rows.Count <> Дата_Окончания.Rows.Count Then MsgBox "Не совпадает количество дат в двух диапазонах", vbInformation Exit Function End If S_arr = Дата_Начала.Value E_arr = Дата_Окончания.Value For I = 1 To UBound(S_arr) If IsDate(S_arr(I, 1)) And IsDate(E_arr(I, 1)) Then Interval = Interval + E_arr(I, 1) - S_arr(I, 1) + 1 Next Y = Int(Interval / 360) M = Int((Interval - (Y * 360)) / 30) D = Interval - Y * 360 - M * 30 Select Case LCase(Часть) Case "г": СТРАХОВОЙ_СТАЖ = Y Case "м": СТРАХОВОЙ_СТАЖ = M Case "д": СТРАХОВОЙ_СТАЖ = D Case Else: СТРАХОВОЙ_СТАЖ = Y & " лет " & M & " мес. " & D & " дн." End Select End Function
[/vba]
Делал когда-то в другой теме. Вычисление идет по формуле: каждые 30 дней - месяц, каждые 12 месяцев - год[vba]
Код
Function СТРАХОВОЙ_СТАЖ(Дата_Начала As Range, Дата_Окончания As Range, Optional Часть As String = "") As String Dim Interval As Long, Y As Long, M As Long, D As Long, I As Long Dim S_arr, E_arr If Дата_Начала.Rows.Count <> Дата_Окончания.Rows.Count Then MsgBox "Не совпадает количество дат в двух диапазонах", vbInformation Exit Function End If S_arr = Дата_Начала.Value E_arr = Дата_Окончания.Value For I = 1 To UBound(S_arr) If IsDate(S_arr(I, 1)) And IsDate(E_arr(I, 1)) Then Interval = Interval + E_arr(I, 1) - S_arr(I, 1) + 1 Next Y = Int(Interval / 360) M = Int((Interval - (Y * 360)) / 30) D = Interval - Y * 360 - M * 30 Select Case LCase(Часть) Case "г": СТРАХОВОЙ_СТАЖ = Y Case "м": СТРАХОВОЙ_СТАЖ = M Case "д": СТРАХОВОЙ_СТАЖ = D Case Else: СТРАХОВОЙ_СТАЖ = Y & " лет " & M & " мес. " & D & " дн." End Select End Function
Спасибо!!! Варианты конечно есть, но "желтые" поля очень массивны, как их перевести в одну ячейку со значением ДАТА "1 год. 1 мес. 1 день" ???????
Спасибо!!! Варианты конечно есть, но "желтые" поля очень массивны, как их перевести в одну ячейку со значением ДАТА "1 год. 1 мес. 1 день" ???????Alexandr_VB