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

Страницы: 1
Вставка столбца по условию, Табель
 
Здравствуйте друзья! Помогите пожалуйста решить задачу, одному мне с ней не справится...
В прикрепленном файле на втором листе "список" есть столбик "явка" и ячейка с датой.
Как осуществить копирование номеров смены (0, либо 2, либо д, либо б) из листа "табель" в этот столбик согласно имен и введенной даты в вышеупомянутой ячейке.
Буду благодарен любой помощи, за ранее спасибо всем откликнувшимся!
Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
Большое спасибо Андрею и Кузьмичу за участие в создании макросов.
Сам я бы не справился  :( !
Финальная версия макросов выглядит так, думаю она обязательно кому-нибудь пригодится:
Код
Sub Delete_1() 'Перенос строки на другой лист по условию (удаляет завершенные задачи)
Application.ScreenUpdating = False 'отключает автообновление экрана

'Присваивает переменной "lr" номер строки на листе "завершенные" куда будет перемещена строка
    
    'присваивает переменной lr номер последней строки во втором (В) столбце на листе завершенные
    lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row
    'присваивает lr номер четвертой строки при условии что она пустая на листе завершенные
    If Sheets("Завершенные").Cells(4, 2) = "" Then
        lr = 4
    'либо присваивает lr номер первой пустой строки во втором (В) столбце при условии что 4 заполнена
    Else: lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If

'Проверяет ячейки заданного столбца на листе "список дел" на выполнение условия

    'цикл от последней строки в четвертом столбце до четвертой с шагом -1
    For i = Cells(Rows.Count, 4).End(xlUp).Row To 4 Step -1
        'если в ячейках четвертого столбца значение "завершено", то
        If Cells(i, 4) = "Завершено" Then
           ' создает диапазон между В и J столбцами в строке "i"
           ' диапазон копируется на лист заверешнные в ячейку "B & Lr", где Lr - следующая свободная ячейка
           Range(Cells(i, "B"), Cells(i, "J")).Copy Sheets("Завершенные").Range("B" & lr)
           'обращение к строке номер - i с последующим её удалением
           Rows(i).Delete
           'изменение номера строки листа "завершенные" на последующую пустую строчку
           lr = lr + 1
        End If
    Next
Application.ScreenUpdating = True 'включает автообновление экрана
End Sub

Sub Delete_2() 'Перенос строки на другой лист по условию (возвращает завершенные задачи)
Application.ScreenUpdating = False
    lr = Sheets("Список дел").Cells(Rows.Count, 2).End(xlUp).Row
    If Sheets("Список дел").Cells(4, 2) = "" Then
        lr = 4
    Else: lr = Sheets("Список дел").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    
    For i = Cells(Rows.Count, 4).End(xlUp).Row To 4 Step -1
        If Cells(i, 4) = "Планирование" Or Cells(i, 4) = "В ожидании" Or Cells(i, 4) = "В работе" Then
           Range(Cells(i, "B"), Cells(i, "J")).Copy Sheets("Список дел").Range("B" & lr)
           Rows(i).Delete
           lr = lr + 1
        End If
    Next
Application.ScreenUpdating = True
End Sub
Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
В целом с кодом разобрался, но не могу никак понять как работает эта строчка:
Код
           ' создает массив между В и J столбцами и как то копирует?
           Range("B" & CStr(i) & ":J" & i).Copy Sheets("Завершенные").Range("B" & lr)

Расшифруйте пожалуйста синтаксис этой строчки, что бы у меня и других пользователей была возможность прикрутить этот скрипт для других проектов!

За ранее всем откликнувшимся огромное спасибо!

Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
Большое спасибо! Код поправил, и все заработало!
Последняя просьба, проверьте правильно ли я понял работу макроса и как работает копирование строки для меня по прежнему загадка.
Ещё раз спасибо, вы очень мне помогли!
Код
Sub Delete() 'удаляет завершенные задачи
    
    'присваивает переменной lr номер последней строки во втором (В) столбце на листе завершенные
    lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row
    'присваивает lr номер четвертой строки при условии что она пустая на листе завершенные
    If Sheets("Завершенные").Cells(4, 2) = "" Then
        lr = 4
    'присваивает lr номер первой пустой строки во втором (В) столбце при условии что 4 заполнена
    Else: lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    'цикл от последней строки в четвертом столбце до четвертой с шагом -1
    For i = Cells(Rows.Count, 4).End(xlUp).Row To 4 Step -1
        'если в ячейках четвертого столбца значение "завершено", то
        If Cells(i, 4) = "Завершено" Then
           'как работает следующая строка?
           ' создает массив между В и J столбцами и как то копирует
           Range("B" & CStr(i) & ":J" & i).Copy Sheets("Завершенные").Range("B" & lr)
           'удаление строки i
           Rows(i).Delete
           'изменение номера строки на следующую
           lr = lr + 1
        End If
    Next
End Sub
Изменено: trainee - 30.03.2020 00:39:20
Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
По одной строке перемещает отлично, но при множественном выборе на соседнем листе появляется только одна строка, а остальные просто исчезают  :(
Код
Sub Delete()
    lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row
    If Sheets("Завершенные").Cells(4, 2) = "" Then
        lr = 4
    Else: lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    For i = Cells(Rows.Count, 4).End(xlUp).Row To 4 Step -1 'цикл от последней строки до четвертой с шагом -1
        If Cells(i, 4) = "Завершено" Then
           Range("B" & CStr(i) & ":J" & i).Copy Sheets("Завершенные").Range("B" & lr)
           Rows(i).Delete
        End If
    Next
End Sub
Изменено: trainee - 29.03.2020 23:28:16 (по требованию модератора)
Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
Спасибо огромное! Но не могли бы вы подробно расписать смысл всех строк! Не могу сообразить как это работает!
Код
Sub delete() 'название макроса
    lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row
    If Sheets("Завершенные").Cells(4, 2) = "" Then
        lr = 4
    Else: lr = Sheets("Завершенные").Cells(Rows.Count, 2).End(xlUp).Row + 1
    End If
    For i = 4 To Cells(Rows.Count, 4).End(xlUp).Row
        If Cells(i, 4) = "Завершено" Then
           Range("B" & CStr(i) & ":J" & i).Copy Sheets("Завершенные").Range("B" & lr)
           Rows(i).delete
        End If
    Next
End Sub
Изменено: trainee - 29.03.2020 23:27:25 (по требованию модератора)
Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
В прикрепленном файле есть решение выше поставленной задачи. Но перенести его в свой файл мне никак не удается.  :(  
Изменено: trainee - 29.03.2020 22:03:59
Перемещение строки на другой лист по условию, Помогите прикрутить макрос по переносу строк в списке задач по статусу "завершено"
 
Пол вечера искал решение, скачал кучу макросов, но вот прикрутить их к своему файлу увы не смог.
Необходимо при изменении статуса задачи на значение "завершено" при нажатии кнопки "удалить" перемещать строку (задачу) на лист "завершенные" в конец таблицы!
А при снятии статуса "завершено" на листе "завершенные" при нажатии кнопки "вернуть" перемещение строки обратно на лист "список задач".
Прошу при написании кода подробно описать логику работы макроса, что бы можно было использовать его в других проектах не очень опытными пользователями.
За ранее спасибо за помощь!
Страницы: 1
Наверх