我正在将员工列表与主列表进行比较,并得到一个计数。这是应该做的,但现在我需要添加一个警告,以忽略计数中的某些员工名称(如Manager, Supervisor, Mgr, Sup)。
接收到的列表位于A列中,名称位于C列中-因此,我需要从计数中忽略上面数组中C列中存在的名称。
..。这就是我用来返回count ->的内容,如何修改它以忽略上面列出的名称数组?
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编辑
示例工作表数据如下所示:
Master List sheet
Store EmpCount
Memphis 23
Houston 13
Phili 10
Received List Sheet
Store Region EmpName
Memphis East Joe
Memphis East James
Memphis East Jane
Memphis East Supervisor
Memphis East Manager我要做的是确保在收到的名单上有23名孟菲斯员工,不包括。
编辑2
根据@PKatona注释中的建议,看起来我可以使用CountIF()函数来计数“忽略”值,然后从整个计数中减去该值。这个语法似乎一个接一个地起作用,但是,我如何使它适应数组呢?
也就是说,这会让我了解Manager的数量,但我还需要搜索其他一些热门词汇:
iIgnore = Evaluate("=COUNTIF(Range('" & shSetup & "'!A:A,'" & shLookup & "'!A" & i & "),"Manager")")发布于 2017-03-20 23:08:11
在不进行语法检查的情况下,下面是如何创建忽略值数组,然后对其进行计数:
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 aIdxignoreCnt现在有了要忽略的值的总数。如果有更多内容,只需将它们添加到拆分行中的字符串中,UBound函数将自动获得循环的上限。
https://stackoverflow.com/questions/42859846
复制相似问题