将员工姓名与主列表进行比较
问题描述:
我将员工列表与主列表进行比较,并获得一个计数。这是应该的,但现在我需要添加一个警告,从计数中忽略某些员工姓名(如Manager, Supervisor, Mgr, Sup
)。将员工姓名与主列表进行比较
收到的列表在列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
编辑
样品的工作表数据是这样的:
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名员工孟菲斯,排除上面的名字来自伯爵。
EDIT 2
每建议由@PKatona意见 - 它看起来像我可以使用CountIF()
函数来计算的“忽略”的值,然后从我的整个计数减去计数。这个语法似乎可以一个接一个地工作,但是,我将如何适应它的数组?
I.E.这会给我的Manager
计数,但有我需要寻找其他的流行词汇:
iIgnore = Evaluate("=COUNTIF(Range('" & shSetup & "'!A:A,'" & shLookup & "'!A" & i & "),"Manager")")
答
把我的头不通过语法检查的顶部,这里是你如何创建忽略值的数组,然后统计它们:
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现在具有您要忽略的值的总数。如果你有更多,只需将它们添加到Split行中的字符串,UBound函数就会自动获得循环的上限。
你能给我们一个你的列的样本表吗? – CLR
@CLR - 更新以显示示例数据。 – IcyPopTarts
如何添加“CountIf”命令来计算您不想要的值,然后从iCount中减去该值?像iCount = iCount - Evaluate(CountIf(...))。 – PKatona