Оператор IF - поиск более 1 строки в диапазоне - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь написать оператор if, чтобы выполнить какое-то действие для 3 сценариев, если .text - это «A», «B» и Or («A», «B»).Я сталкиваюсь с проблемой, когда в диапазоне есть «A» и «B», и я просто хочу знать, как лучше всего найти обе строки в диапазоне, который я ищу.

ElseIf Master.Range("V13:V18").Text Like "A" Or Master.Range("V13:V18").Text Like "B" Then

* отредактировал набор данных для ясности в сценарии 3

case 1    case 2    case 3
1 A        1 B       1 A
2 A        2 B       2 A
3 A        3 B       3 A
4 A        4 B       4 B
5 A        5 B       5 A
6 A        6 B       6 B

Это часть кода, который я написал.

If Master.Range("V13:V18").Text Like "A" Then
do something..
ElseIf Master.Range("V13:V18").Text Like "B" Then
do something..
ElseIf Master.Range("V13:V18").Text Like "A" Or Master.Range("V13:V18").Text Like "B" Then
do something..

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Попробуйте это:

Sub Test()

Dim A As Long, B As Long
With ThisWorkbook.Sheets("Master")
    A = Application.WorksheetFunction.CountIf(.Range("V13:V18"), "A")
    B = Application.WorksheetFunction.CountIf(.Range("V13:V18"), "B")
    If A = .Range("V13:V18").Cells.Count Then
        MsgBox "All A"
    ElseIf B = .Range("V13:V18").Cells.Count Then
        MsgBox "All B"
    ElseIf A + B = .Range("V13:V18").Cells.Count Then
        MsgBox "Both A and B"
    Else
        MsgBox "Other values too"
    End If
End With

End Sub
0 голосов
/ 03 июля 2019

Используйте этот код:

If Master.Range("V13:V18").Find("B") Is Nothing Then

    a = "A"
    '''Do Something ...all cells have "A"

ElseIf Master.Range("V13:V18").Find("A") Is Nothing Then

    a = "B"
    '''Do Something ...all cells have "B"

Else: a = "AB" '''Do Something ...all cells have "A or B"


End If

MsgBox a

Msgbox покажет вам, какой случай верен из 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...