大家好,我正在做一个项目,需要一些 VBA 编码帮助来自动化此需求。
要求:
结果是对同一“类别”下的特定用户进行检查,我们需要识别异常值
离群值是指在同一类别表下的任何值(行/列)中都找不到团队成员或团队成员+1。
如果特定区域有任何异常值,想记录异常值或非异常值的结果
将继续向下检查剩余表格的其他不同类别。
我已经花了 5 天的时间绞尽脑汁学习 VBA,但我真的很感激这里的一些帮助和指导。
假设表格位于工作表的左上角(即“区域”位于单元格
$A$1
中):
With ActiveSheet.Cells(1, 1).CurrentRegion.Columns(5)
.Formula = "=IF(COUNTIFS($B:$B,$B1,$C:$C,$C1)+COUNTIFS($B:$B,$B1,$D:$D,$C1)+COUNTIFS($B:$B,$B1,$C:$C,$D1)+COUNTIFS($B:$B,$B1,$D:$D,$D1)<3, ""Outlier"", ""Not an Outlier"")"
.Calculate
.Value = .Value
.Cells(1, 1).Value = "Result"
End With
所有这一切都是将以下公式(带有填充)放入“结果”列中,计算结果,然后将其转换为文本而不是公式(并替换“结果”标题):
=IF(COUNTIFS($B:$B,$B1,$C:$C,$C1)+COUNTIFS($B:$B,$B1,$D:$D,$C1)+COUNTIFS($B:$B,$B1,$C:$C,$D1)+COUNTIFS($B:$B,$B1,$D:$D,$D1)<3, "Outlier", "Not an Outlier")
所做的就是将团队成员出现在该类别的 C 列或 D 列中的次数相加(使用 4
COUNTIFS
)。 如果大于 2,则不是异常值。
(2 是 current 行的结果,因为“团队成员”出现在 C 列 (
1
) 中,而不是出现在 D 列 (1+0
) 中,并且“团队成员+1”不出现在列中D (1+0+0
) 但确实出现在 D 列 (1+0+0+1
))
当然,由于这只是一个Excel公式,如果您愿意,您也可以跳过VBA而只使用公式...