我不确定我想要实现的目标是否可行。所以这里是:
我有两张工作簿:
第一张表包含员工的原始数据以及他们参加或未参加的培训(他们无法参加培训)。表格包含几列,例如:姓名、特殊 ID(每个员工都不同)、2 个空白列、存在(是/否)等等......
第二张表将根据范围和存在标准创建报告。
从技术上讲,它是这样的:
报告表有员工列表,他们将使用自动过滤器进行过滤。那些被过滤的员工将被检查他们是否参加了 14 类培训。类别因范围而异(范围是已知的;将添加或调整时间范围以适应新添加的培训)。
我的问题: 是否可以创建 vba 代码来检查员工是否参加了某些培训(countif 在某个范围内,条件:不存在 = 不计算)并将值粘贴到某些单元格?如果是,您能否就如何做到这一点提供一些建议?我不是要求准备好的代码。
试图让它工作,但我坚持这一点。“if cells.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
第二次编辑,早期的代码做了无限循环。现在我认为 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