我不确定我想要实现的目标是否可能。所以这里是:
我有 2 张工作簿:
第一张表包含员工的原始数据以及他们参加或未参加的培训(他们无法参加培训)。工作表包含几列,例如:姓名、特殊 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 https://dl.dropboxusercontent.com/u/7421442/sample%20workbook%20(1).xls