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

Excel 如何使用另一列中的文本匹配触发彩色单元格计数,excel,worksheet-function,vba,Excel,Worksheet Function,Vba,我想将工作表1中的员工姓名与工作表2中的员工姓名进行匹配,然后对特定列中所有黄色填充的单元格进行计数 我有一个VBA模块,它可以运行高亮显示单元格的计数,而无需进行名称匹配,而且工作非常完美。现在,我需要添加一个额外的指标,对每个员工的所有突出显示的单元格进行计数 数据信息: 表1 B2:B50-员工姓氏列表 第二张D2:D1845——员工姓氏栏。注:这是一份包含1845行客户数据记录的工作表,因此员工姓名可以在上述列中多次列出 第二页E2:E1845-带有黄色单元格的列。并非列中的所有单元格都

我想将工作表1中的员工姓名与工作表2中的员工姓名进行匹配,然后对特定列中所有黄色填充的单元格进行计数

我有一个VBA模块,它可以运行高亮显示单元格的计数,而无需进行名称匹配,而且工作非常完美。现在,我需要添加一个额外的指标,对每个员工的所有突出显示的单元格进行计数

数据信息:

表1 B2:B50-员工姓氏列表

第二张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

我不确定这是否是你想要实现的,我还不能发布图片。 此子表在范围表1 C2:C50中为表2 D2:D1845中的每位员工插入一个计数器,旁边的单元格为黄色

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

根据你在评论中向我解释的你想要的,这里有一行代码来做你想要的:

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作为自定义项,并使用以下公式:

=IF(COUNTIF(D:D, B1)>0,CountByColor(E:E, B1),"")

假设您的颜色范围是“B”单元格,则修改其他内容

需要更多详细信息。是否要查找E列中所有黄色单元格的计数,这些单元格与B中感兴趣的名称位于同一行?不需要位于同一行。这类似于sumIf…意思是如果一列中的数据与另一列中的数据匹配,然后输入X的总和值。但是,因为这是处理文本而不是数字,并且我正在计算突出显示的无条件格式单元格而不是数字,sumIf将不起作用。但这基本上就是我需要做的。因此,如果B中的名称在D列的某个地方,那么将所有黄色单元格加在E?Lance中-是的,这是正确的。非常感谢!这似乎是可行的。但请原谅我;我的大脑在这一点上是糊状的。我的细胞配方是什么?我没弄对。我一直收到一个名称错误。您没有要求单元格公式,而是要求VBA。您可以将子例程转换为函数并创建UDF,也可以使用工作表函数并仅使用CountByColor作为UDF。我以为你是在按按钮触发这个。对不起,我需要更好地解释我自己。我已经转换了子程序,它正在工作。再次感谢你!非常感谢您的提问,我添加了一个公式,该公式适用于每个单元格,可以单击并拖动以自动填充,使用您的CountByColor作为自定义项。太完美了!我希望我能给你另一个绿色支票,为这个补充解决方案。非常感谢。