Vba 将员工姓名与主列表进行比较
我将一份员工名单与一份总名单进行比较,并进行计数。这是应该的,但现在我需要添加一个警告,从计数中忽略某些员工的姓名(如Vba 将员工姓名与主列表进行比较,vba,excel,excel-2013,Vba,Excel,Excel 2013,我将一份员工名单与一份总名单进行比较,并进行计数。这是应该的,但现在我需要添加一个警告,从计数中忽略某些员工的姓名(如经理、主管、经理、主管) 收到的列表在A列中有位置,名称在C列中-因此我需要从计数中忽略上面数组中存在于C列中的名称 。。。 这就是我用来返回计数->如何修改它以忽略上面列出的名称数组 Const shLookup As String = "Master List" Const shSetup As String = "Received" With Worksheets(shL
经理、主管、经理、主管)
收到的列表在A列中有位置,名称在C列中-因此我需要从计数中忽略上面数组中存在于C列中的名称
。。。
这就是我用来返回计数->如何修改它以忽略上面列出的名称数组
Const shLookup As String = "Master List"
Const shSetup As String = "Received"
With Worksheets(shLookup)
aData = .Range("a1").CurrentRegion
End With
ReDim aOutput(1 To UBound(aData), 1 To 3)
For i = 2 To UBound(aData)
iCount = Evaluate("=COUNTIF('" & shSetup & "'!A:A,'" & shLookup & "'!A" & i & ")")
If aData(i, 2) <> iCount Then
n = n + 1
aOutput(n, 1) = aData(i, 1)
aOutput(n, 2) = aData(i, 2)
aOutput(n, 3) = iCount
End If
Next
我想要的是确保在收到的名单上有23名孟菲斯员工,不包括上述人员
编辑2
根据@PKatona评论中的建议-看起来我可以使用CountIF()
函数计算“忽略”值,然后从我的整个计数中减去该计数。这种语法似乎可以一个接一个地使用,但是,如何将其调整为数组呢
也就是说,这将为我提供Manager
的计数,但我还需要搜索其他热门词汇:
iIgnore = Evaluate("=COUNTIF(Range('" & shSetup & "'!A:A,'" & shLookup & "'!A" & i & "),"Manager")")
在没有语法检查的情况下,下面是如何创建ignore值数组并对其进行计数:
dim ignore() as String
ignore = Split("Manager,Supervisor,Mgr,Sup", ",")
dim ignoreCnt as integer
ignoreCnt = 0
dim aIdx as integer
for aIdx = 0 to UBound(ignore) - 1
ignoreCnt = ignoreCnt + Evaluate("=COUNTIF(Range('" & shSetup & _
"'!A:A,'" & shLookup & "'!A" & i & "),ignore(aIdx))")
next aIdx
ignoreCnt现在具有要忽略的值的总数。如果您有更多数据,只需将它们添加到拆分行中的字符串中,UBound函数将自动获取循环的上限。您能给我们一个列的示例表吗?@CLR-更新以显示示例数据。添加“CountIf”命令来计算您不需要的值,然后从iCount中减去该值如何?类似于iCount=iCount-Evaluate(CountIf(…)。@PKatona-不确定如何在我的语法中实现它。例子?
dim ignore() as String
ignore = Split("Manager,Supervisor,Mgr,Sup", ",")
dim ignoreCnt as integer
ignoreCnt = 0
dim aIdx as integer
for aIdx = 0 to UBound(ignore) - 1
ignoreCnt = ignoreCnt + Evaluate("=COUNTIF(Range('" & shSetup & _
"'!A:A,'" & shLookup & "'!A" & i & "),ignore(aIdx))")
next aIdx