Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 具有多个条件和列的If条件_Excel_Vba_If Statement - Fatal编程技术网

Excel 具有多个条件和列的If条件

Excel 具有多个条件和列的If条件,excel,vba,if-statement,Excel,Vba,If Statement,我有一份库存清单,第27栏是仓位,第42栏是数量。参数如下所示,如果列27=SO000和42=0,则将它们从列表中排除。下面的参数对于1参数非常有效: With WbCSV.Sheets(1) vDB = .UsedRange For i = 1 To UBound(vDB, 1) 'AA column = 27, AP column = 42 If vDB(i, 27) = "SO0000" And vDB(i, 42) =

我有一份库存清单,第27栏是仓位,第42栏是数量。参数如下所示,如果列27=SO000和42=0,则将它们从列表中排除。下面的参数对于1参数非常有效:

With WbCSV.Sheets(1)
    vDB = .UsedRange
    For i = 1 To UBound(vDB, 1)
        'AA column = 27, AP column = 42
        If vDB(i, 27) = "SO0000" And vDB(i, 42) = 0 Then
        Else
            'Get the contents corresponding to the dynamic array. Bring the matrix to the inverted state.
            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
'Colse the text file
WbCSV.Close (0)
    
'The dynamic array is recorded in sheet2.Bring the row to the inverted state.
With Ws
    .UsedRange.Clear
    .Range("a1").Resize(n, 5).Value = WorksheetFunction.Transpose(vR)
End With
Worksheets("Sheet2").Columns("A:E").AutoFit
Application.ScreenUpdating = True
但现在我陷入了困境,我需要补充更多的论点。如果第27列=WG0000,第42列=0,则删除项目。并且SR0000=0从列表中排除


有人能帮我吗?因为我不确定如何添加更多参数,我不确定我是否完全理解您希望添加的参数(
SR0000=0
),但听起来您需要一个
elseif
语句

With WbCSV.Sheets(1)
    vDB = .UsedRange
    For i = 1 To UBound(vDB, 1)
        'AA column = 27, AP column = 42
        If vDB(i, 27) = "SR0000" And vDB(i, 42) = 0 Then

        ElseIf vDB(i, 27) = "WG0000" And vDB(i, 42) = 0 Then
        'any further ElseIf statements can be added with a different set of conditions

        Else    'This gets triggered only if none of the If or ElseIf condition sets were met.
            'Get the contents corresponding to the dynamic array. Bring the matrix to the inverted state.
            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


我不确定我是否完全理解您希望添加的参数(
SR0000=0
?),但听起来您需要一个
elseif
语句

With WbCSV.Sheets(1)
    vDB = .UsedRange
    For i = 1 To UBound(vDB, 1)
        'AA column = 27, AP column = 42
        If vDB(i, 27) = "SR0000" And vDB(i, 42) = 0 Then

        ElseIf vDB(i, 27) = "WG0000" And vDB(i, 42) = 0 Then
        'any further ElseIf statements can be added with a different set of conditions

        Else    'This gets triggered only if none of the If or ElseIf condition sets were met.
            'Get the contents corresponding to the dynamic array. Bring the matrix to the inverted state.
            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


嗨,斯宾塞,谢谢你的回复。基本上是的,共有3个箱子SO0000、SR0000和WG0000,如果它们的数量为零,则应将它们从拉至第2页的列表中排除。我会测试它,看看它是否有效。嗨,斯宾塞,谢谢你的回复。基本上是的,共有3个箱子SO0000、SR0000和WG0000,如果它们的数量为零,则应将它们从拉至第2页的列表中排除。我将测试它,看看它是否有效。