Условие If с несколькими условиями и столбцами

#excel #vba #if-statement

#excel #vba #if-оператор

Вопрос:

У меня есть список запасов, столбец 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 и col 42 = 0, тогда исключите элементы. И SR0000 = 0 исключить из списка.

Может кто-нибудь мне помочь? Потому что я не уверен, как добавить дополнительные аргументы

Ответ №1:

Я не уверен, что полностью понимаю, какой аргумент вы хотите добавить ( 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

  

Комментарии:

1. Привет, Спенсер, спасибо за ответ. В принципе, да, есть 3 ячейки SO0000, SR0000 и WG0000, если их количество равно нулю, их следует исключить из списка, который переносится на лист 2. Я протестирую его и посмотрю, работает ли он.