如何使用另一列中的文本匹配来触发彩色单元格的计数

我希望将表一中的员工姓名与表二中的员工姓名相匹配,然后运行特定列中所有黄色(填充)单元格的计数。

我有一个VBA模块,将运行突出显示的单元格的计数,而不进行名称匹配,它的工作完美。 现在我需要添加一个额外的度量标准,为每个员工运行所有突出显示的单元格。

数据信息:

Sheet One B2:B50 – 员工姓氏列表。

工作表D2:D1845 – 员工姓氏列。 注意:这是一个包含1845个客户数据logging行项目的工作表,因此员工姓名可以在列中多次列出。

第二页E2:E1845 – 带黄色细胞的柱子。 并非列中的所有单元格均为黄色。 这就是为什么我需要计算每位员工有多less颜色。

按颜色计算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 

根据你对我的解释,你想在这里的评论是一个单一的行为做你想做的事情:

 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'单元格,否则修改

我真的不知道这是你想达到什么,我不能张贴图像呢。 此Sub为Sheet1 D2:D1845中的每个员工在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