我希望将工作表1上的员工姓名与工作表2中的员工姓名相匹配,然后运行特定列中所有黄色(已填充)单元格的计数。
我有一个VBA模块,可以在不进行名称匹配的情况下运行突出显示的单元格的数量,并且它可以完美地运行。现在我需要添加一个额外的度量标准,为每个员工运行所有突出显示的单元格的计数。
数据信息:
Sheet One B2:B50 - 员工姓氏列表。
Sheet Two D2:D1845 - 包含员工姓氏的列。注意:这是一个包含1845个客户数据记录行项目的工作表,因此可以在所述列中多次列出员工姓名。
第二张纸E2:E1845 - 带有黄色细胞的柱子。并非列中的所有细胞都是黄色的。这就是为什么我需要计算每个员工的彩色数量。
按颜色VBA计算:
Function CountByColor(InputRange As Range, ColorRange As Range) As Long
Dim cl As Range, TmpCount As Long, ColorIndex As Integer
Application.Volatile
ColorIndex = ColorRange.Interior.ColorIndex
TmpCount = 0
On Error Resume Next
For Each cl In InputRange.Cells
If cl.Interior.ColorIndex = ColorIndex _
Then TmpCount = TmpCount + 1
Next cl
CountByColor = TmpCount
End Function
答案 0 :(得分:0)
我不确定这是否是您想要实现的目标我还不能发布图像。 对于Sheet2 D2:D1845中的每个员工,此Sub在Sheet1 C2:C50范围内插入一个计数器,旁边的单元格为黄色。
Sub Find_Matches()
Dim CompareRange As Variant, x As Variant, y As Variant, CountA As Integer
Set EmployeeRange = Worksheets("Sheet1").Range("B2:B50")
Set CompareRange = Worksheets("Sheet2").Range("D2:D1845")
For Each x In EmployeeRange
For Each y In CompareRange
If x = y And y.Offset(0, 1).Interior.ColorIndex = 6 Then CountA = CountA + 1
Next y
x.Offset(0, 1).Value = CountA
CountA = 0
Next x
End Sub
答案 1 :(得分:0)
根据您向我解释的内容,您希望在评论中找到您想做的事情:
Public Sub NameColorCount(NameToSearch As String, TargetCell As Range, _
SearchRange As Range, RangeToCountColor As Range, ColorRange As Range)
If Not SearchRange.Find(NameToSearch) Is Nothing Then
TargetCell.Value = CountByColor(RangeToCountColor, ColorRange)
End If
End Sub
如果要在单元格中执行此操作,可以将CountByColor用作UDF并使用以下公式:
=IF(COUNTIF(D:D, B1)>0,CountByColor(E:E, B1),"")
假设您的ColorRange是' B'单元格,否则修改