VBA库存数据筛选:如何添加多条件排除规则?
修改VBA代码添加多条件排除规则
没问题,这事儿很容易搞定!我们只需要把新增的两个排除规则用Or和原来的条件组合起来就行,这样只要仓位是SO0000/WG0000/SR0000且数量为0的行,都会被排除掉。
修改后的完整代码
With WbCSV.Sheets(1) vDB = .UsedRange For i = 1 To UBound(vDB, 1) 'AA列=27,AP列=42 ' 扩展条件:只要满足三个排除规则中的任意一个,就跳过该行 If (vDB(i, 27) = "SO0000" And vDB(i, 42) = 0) _ Or (vDB(i, 27) = "WG0000" And vDB(i, 42) = 0) _ Or (vDB(i, 27) = "SR0000" And vDB(i, 42) = 0) Then Else '获取动态数组对应内容,转换矩阵维度 n = n + 1 ReDim Preserve vR(1 To 5, 1 To n) vR(1, n) = vDB(i, 1) vR(2, n) = vDB(i, 2) vR(3, n) = vDB(i, 3) vR(4, n) = vDB(i, 27) vR(5, n) = vDB(i, 42) End If Next i End With '关闭文本文件 WbCSV.Close (0) '将动态数组写入Sheet2,转换矩阵维度 With Ws .UsedRange.Clear .Range("a1").Resize(n, 5).Value = WorksheetFunction.Transpose(vR) End With Worksheets("Sheet2").Columns("A:E").AutoFit Application.ScreenUpdating = True
关键修改说明
我把原来的单条件判断,改成了用Or连接的三个组合条件:
- 每个条件都是「仓位等于指定值 且 数量为0」
- 三个条件之间用
Or连接,意味着只要满足其中任意一个,就会触发排除逻辑(跳过该行)
如果以后还要加更多类似的排除规则,直接在后面继续用Or追加新的(vDB(i,27)="XXX" And vDB(i,42)=0)就行,非常灵活。
内容的提问来源于stack exchange,提问作者Wildsniper911




