检查列的值。如果为真,则检查另一列中的同一行,如果不为空则计数

检查列的值。如果为真,则检查另一列中的同一行,如果不为空则计数

我有一份员工电子表格。A 列是部门类型列表(销售、人力资源、工资单等)。B 列是员工评估完成的日期,如果不完整则为空白。我想要一个函数来检查部门列中是否存在特定部门类型(例如“销售”),如果等于“销售”,则检查评估列的相应行并计算日期数。然后我会为所有其他部门类型复制此函数。因此,对于“销售”示例,如果有四名员工,其中两名有评估日期,则结果将为“2”。请注意,我不希望它计算与其他部门类型相关的 B 列中的日期。

A 列 - 部門 . . . - 人力资源 - 销售 - 人力资源 - 薪资 - 销售 - 销售 - 销售。

B 列 - 评价- 2015 年 7 月 1 日 - 2015 年 7 月 8 日 - 2015 年 7 月 6 日 - “空白” - “空白” - 2015 年 7 月 3 日 - “空白” -

答案1

打开 VBA 编辑器,然后从插入菜单中选择模块。将以下内容粘贴到结果文本字段中:

Function DEPTAPPCOUNT(Dept As String, Range As Range, CountRange As Range) As Integer
    Dim count As Integer
    For Each rCell In Range
        If rCell.Text = Dept Then
            If rCell.Offset(0, 1).Text <> "" Then count = count + 1
        End If
    Next
    DEPTAPPCOUNT = count
End Function

按下工具栏上的“保存”按钮,然后关闭 VBA 编辑器以返回到电子表格。现在,您可以DEPTAPPCOUNT像使用 Excel 内部函数一样使用该函数。如果您的部门列从 A2 到 A7(评估日期在 B2 到 B7 - 计数列必须紧靠部门列的右侧才能使该函数起作用),请输入=DEPTAPPCOUNT("Sales", A2:A7, B2:B7)以获取具有非空白评估日期的销售条目数。Sales根据需要调整第一个参数(文本)以计算其他部门。

如果您使用的是 Excel 2007 或更新版本,则需要以XLSM(启用宏)格式保存工作表。

对于那些想知道为什么CountRange即使没有使用也必须传递给自定义函数的人来说,如果日期列发生变化,Excel 就需要重新计算计数。换句话说,将额外的范围传递给函数会在 Excel 的计算中产生依赖关系。

相关内容