Excel показывать код VBA с критериями, полученными со значениями
Я не уверен, возможно ли то, чего я хочу достичь. Итак, вот оно:
Я получил рабочую тетрадь с 2 листами:
Первый лист содержит необработанные данные о сотрудниках и тренингах, которые они проходили или не проходили (они не могли прийти на тренинг). Листы содержат несколько столбцов, таких как: имя, специальный идентификатор (разные для каждого сотрудника), 2 пустых столбца, наличие (да / нет) и еще несколько ...
Второй лист создаст отчет на основе диапазона и критериев присутствия.
Технически этоЧто-то вроде этого:
В отчете есть список сотрудников, они будут отфильтрованы с помощью автофильтра. Эти отфильтрованные сотрудники будут проверены, прошли ли они обучение на 14 категориях. Категории отличаются в зависимости от диапазона (диапазоны известны; временные диапазоны будут добавляться или корректироваться для вновь добавленных тренингов).
Моя проблема: Можно ли создать код VBA, который будет проверять, был ли сотрудник на определенных тренингах (показывать в определенном диапазоне с условием: нет = не считать) и вставлять значение в определенные ячейки? Если это так, не могли бы вы дать совет, как это сделать? Я не прошу готовый код.
Пытаюсь заставить это работать, но я застрял в этом. Ошибка в строке "если cell.find ... ".
Sub Check()
MyRange = Range("A1", Selection.End(xlDown))
For Each MyCell In MyRange
With Range("pp2dni2007")
If Cells.Find(MyCell.Value) Is Nothing Then
Else
If ActiveCell.Value = ActiveCell.Offset(0, 3).Value Then
MyCell.Offset(0, 6).Value = 1
Else
MyCell.Offset(0, 6).Value = 0
End If
End If
End With
Next
End Sub
2-е редактирование, предыдущий код делал бесконечный цикл. Теперь я думаю, что операторы if ссылаются на неправильный диапазон, но не уверен, что с этим делать.
Sub Check()
Dim MyRange As Range, MyCell As Variant
Range("A1").Select
Set MyRange = Range(Selection, Selection.End(xlDown)).Rows.SpecialCells(xlCellTypeVisible)
For Each MyCell In MyRange.Cells
With Range("pp2dni2007")
If .Cells.Find(MyCell.Value) Is Nothing Then
Else
If .Cells.Find(MyCell.Value).Value = .Cells.Find(MyCell.Value).Offset(0, 3).Value Then
MyCell.Offset(0, 6).Value = 1
Else
MyCell.Offset(0, 6).Value = 0
End If
End If
End With
Next
End Sub
Образец рабочей книги:https://dl.dropboxusercontent.com/u/7421442/sample%20workbook%20(1).xls