Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Расчёт количества часов между двумя датами, С учётом условий
 
Всем доброго дня!

Насколько я знаю, похожие темы поднимались неоднократно, но, к сожалению, ответа в них я не нашёл.
Имеется файл с датами. Необходимо вычислить количество часов (либо дней, НО не округлённых, т.е. 50 часов - это не 3 дня, а 2,08) между началом всего пр-ва (ячейка B10) и началом пр-ва определённой позиции(для каждой позиции от B13 до B117) с учётом следующих исключений:
1)Воскресенье - выходной
2)В субботу же рабочие часы только с 7 до 19
3)Праздники считаются за выходные дни

Пока что получилось реализовать это через формулу networkdays, но она, к сожалению, округляет часы до полных суток, а этот вариант мне не подходит.
Может у кого-нибудь есть какие-либо идеи по решению данной задачи?
Сортировка выделенного диапазона по трем столбцам, VBA
 
Доброго дня!
Честно говоря, я макросы писать не умею, и написал этот макрос из кусков чужих макросов, найденных на просторах интернета.
Но, к сожалению, как написать одно из условий я найти не могу.
Суть макроса в следующем:
-От выделенной строки макрос выделяет диапазон до последней активной ячейки
-Затем сортирует по трём столбцам

Подскажите, пожалуйста, как написать условие, чтобы он начинал сортировать, если выделена именно строка, а я не ячейка.
Если же выделена только ячейка, пусть ничего не делает, либо выдаёт предупреждение.

Всем заранее спасибо!

Код
Sub Сортировка()
'
' Сортировка Macro
'

'
Dim ColValue As Range, RowValue As Range, c As Integer, r As Long, MyRange As Range
   Set ColValue = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
                             LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious)
   c = ColValue.Column
   Set RowValue = Cells.Find(What:="*", After:=Range("A1"), LookIn:=xlValues, _
                             LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
   r = RowValue.Row
   Set MyRange = Range(ActiveCell, Cells(r, c))
   MyRange.Select
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range( _
        "F:F"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range( _
        "I:I"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range( _
        "G:G"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.ActiveSheet.Sort
        .SetRange Selection
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Изменено: Toficozz - 13.10.2017 10:43:00
Тормозит совсем небольшой файл
 
Товарищи, подскажите в чём может быть дело.  
Файл совсем небольшой, но его первая вкладка - одна большая проблема. Когда я его создавал, всё было ок, но в один прекрасный момент всё испортилось. Проматывание листа вправо тормозит, раскрытие сгруппированных столбцов тормозит, запуск макроса (Macros 2)тормозит (если отключить автоматический пересчёт формул помогает, но не ахти как). Формул и данных там не особо много, поэтому я даже не знаю в чём может быть проблема.  
 
В файле стоит защита от редактирования, но она без пароля, так что можно спокойно её снять.
Страницы: 1
Наверх