Страницы: 1
RSS
Виборка дати по определленому условию
 
Здраствуйте!  За каждний отработаний день в виходной, работник должен получить отгул. Задача состоит в учете етих дней. Как определить сколько виходних должни работнику я разобрался. Но еще нужно вичислять дату, за какой день дать отгул, или какой день работник отгул взял лишний. Причем есть условие, что отгул не может бить видан на перед, а только после рабочего дня в виходной день.
 
Как вариант..
 
Маугли, Не понятно как записать отгул... Вот через индекс-агрегат пробую, только чет отгулов 4 по разных датах, а показывает только одну дату, и то не ту где отгул...
Изменено: Kent_ok - 07.05.2019 21:05:59
 
Достаточно отметить комментарием (пустым или с сообщением)  отгулы
и перейти на лист "Учет отгулов"
Конечно, без знания макросов причесать по конкретике  будет трудновато..
Выбирать Вам )
Комментарии  в табеле -это часть данных. Произвольно  удалять, ставить  - меняет рассчет
Если в книге несколько табелей (лист-табель) история отгулов  (как правило их погашения) работает.
Код
Private Sub Worksheet_Activate()
    Dim sh As Worksheet, r As Range, c As Range, j&
    Range("A2:D1000").ClearContents: j = 1
    For Each sh In Worksheets
        Set r = sh.Range("B3:AH5")    'ваш табель
        If sh.Name <> "Учет отгулов" Then
            For Each c In r
                If Not c.Comment Is Nothing Then
                    j = j + 1
                    Cells(j, 1) = c.EntireRow.Cells(2)
                    Cells(j, 2) = c.EntireColumn.Cells(2)
                    Cells(j, 3) = c.Comment.Text
                    Cells(j, 4) = c.EntireColumn.Cells(1)
                End If
            Next
        End If
    Next
End Sub
Изменено: Маугли - 09.05.2019 03:46:54
 
Спасибо, хорошый вариант. Вот еще помогли формулой. (Выднлил синим)
 
Добавил сортировку ФИО-Тип дня-Д ата получения отгула
По-моему тоже самое , что синий диапазон
Код
Private Sub Worksheet_Activate()
    Dim sh As Worksheet, r As Range, c As Range, j&
    Range("A2:D1000").ClearContents: j = 1
    For Each sh In Worksheets
        Set r = sh.Range("B3:AH5")    'ваш табель
        If sh.Name <> "Учет отгулов" Then
            For Each c In r
                If Not c.Comment Is Nothing Then
                    j = j + 1
                    Cells(j, 1) = c.EntireRow.Cells(2)
                    Cells(j, 2) = c.EntireColumn.Cells(2)
                    Cells(j, 3) = c.Comment.Text
                    Cells(j, 4) = c.EntireColumn.Cells(1)
                End If
            Next
        End If
    Next
    Set r = [A1].CurrentRegion
    With ActiveSheet.Sort
        .SortFields.Clear
        .SortFields.Add Key:=[A1]
        .SortFields.Add Key:=[D1]
        .SortFields.Add Key:=[B1]
        .SetRange r
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
End Sub
Страницы: 1
Наверх