搜索多个列和行以查看 Excel VBA 的表中是否存在值

问题描述 投票:0回答:1

大家好,我正在做一个项目,需要一些 VBA 编码帮助来自动化此需求。

source

要求:

  1. 结果是对同一“类别”下的特定用户进行检查,我们需要识别异常值

  2. 离群值是指在同一类别表下的任何值(行/列)中都找不到团队成员或团队成员+1。

  3. 如果特定区域有任何异常值,想记录异常值或非异常值的结果

  4. 将继续向下检查剩余表格的其他不同类别。

我已经花了 5 天的时间绞尽脑汁学习 VBA,但我真的很感激这里的一些帮助和指导。

excel vba if-statement conditional-statements iteration
1个回答
0
投票

假设表格位于工作表的左上角(即“区域”位于单元格

$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而只使用公式...

© www.soinside.com 2019 - 2024. All rights reserved.