Я запускаю отчет, который отображает список сотрудников со всей информацией, связанной с их трудовой книжкой. Одна из вещей - это составленный список всех их ролей сотрудников с датой действия «До и с». Например, если список возможных ролей следующий:
- Роль 1
- Роль 1 - тренер
- Роль 2
- Роль 2 - тренер
- Роль 3
- Роль 3 - тренер
- Стажер
- Бывший сотрудник
- Стажер
И есть сотрудник, который отмечен как Роль 1, Роль 1 - тренер, Роль 2, а раньше это была Роль 3, информация будет отображаться в одной ячейке следующим образом:
- Роль 1 - 1/1/2020 для N / A; Роль 1 - тренер - 1/1/2020; Роль 2 - 1/1/2020 для N / A; Роль 3 - 1/1/2020 до 28/2 / 2020
Для отчета, который я использую, я хочу видеть только список активных сотрудников в роли 1 (поэтому не считая людей, вышедших на пенсию с роли 1, но все еще активен в других ролях).
У меня есть следующий фрагмент кода, который позволяет мне удалить из списка всех, у кого нет роли 1 в их записи:
Sub deleteifnotR1 ()
Dim ws As Worksheet
Dim rng As Range
Dim lastRow As Long
Set ws = ActiveWorkbook.Sheets("Employee Record")
lastRow = ws.Range("E" & ws.Rows.Count).End(xlUp).Row
Set rng = ws.Range("E1:E" & lastRow)
'filter and delete all but header row
With rng
.AutoFilter Field:=1, Criteria1:="<>*Role 1*"
lr = Cells(Rows.Count, 1).End(xlUp).Row
If lr > 1 Then
Range("D2:D" & lr).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End If
End With
' turn off the filters
ws.AutoFilterMode = False
End Sub
Проблема С этим связано то, что он по-прежнему оставит мне список бывших сотрудников и активных сотрудников, которые, возможно, вышли на пенсию с 1-й роли, но по-прежнему имеют 3-ю роль и т. д. c.
. это, у меня было две идеи - во-первых, можно ли не объединять эти данные? Например, чтобы вставить новые столбцы вверху со всеми различными возможными ролями, а затем создать макрос, который идентифицирует, когда у кого-то есть «Роль 1 - тренер» в своей записи, и переместить эти данные в правильный столбец? Тогда я мог бы использовать вариант приведенного выше кода, чтобы удалить любого, у кого нет «N / A» в столбце Роли 1.
В качестве альтернативы, можно ли изменить следующую строку:
.AutoFilter Field:=1, Criteria1:="<>*Role 1*"
Чтобы каким-то образом найти «Роль 1 - ЛЮБАЯ ДАТА до Н / Д»? Это отфильтровывает как бывших сотрудников, так и сотрудников, вышедших на пенсию с роли 1, но не более.
(В идеале я бы просто переработал отчет, а не исправлял его после факта, но у меня нет доступ к этой части нашей системы, и люди, которые не хотят делать какие-либо разработки на нем).
Заранее спасибо за вашу помощь.