как использовать массив вместо использования А, если - PullRequest
0 голосов
/ 12 декабря 2018

Есть ли возможность использовать и критерии в массиве, потому что у меня есть 4-5 критериев.Так есть ли какой-либо вариант или нужно сделать то же самое, как показано ниже?

For Each c In rng
If c.Value <> "A" And c.Value <> "B" And c.Value <> "C" Then
 dic(c.Value) = c.Value
End If
Next c

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Конечно, вы можете, но не можете быть чище / проще: если элементы array являются A, B и C, то вы можете использовать код, подобный этому псевдокоду:

For Each c In rng
    For each element in array
        If c.value <> array(element) Then count = count + 1 'how many times it is true
        End If
    Next element
    If count = NumberOfElementsOf(array) Then do your stuff with c
Next c

Но если бы у вас было много критериев, это могло бы быть лучше.Конечно, его можно оптимизировать, например, если вы проверите противоположные критерии и если это правда, выйдите из цикла - вы можете открыть для себя различные возможности.

0 голосов
/ 12 декабря 2018

Ваш вопрос нуждается в большем количестве контекста, что затрудняет предоставление хорошего ответа.Все, что я могу думать, это:

  • Вы можете сделать это также с Switch, но вы все еще применяете ту же логику, что и в if.

  • Вы можете применить filter к вашему диапазону, чтобы не было ни A, B, C, и вы избежали бы If внутри цикла.

  • Если вы хотите сделать его «короче», но менее читабельным (по той причине, по которой я этого не предлагаю), вы можете преобразовать ваш c в ASCII, а затем, зная, что AC являются смежными, вы можете просто увидеть, что значение не междуте, которые соответствуют AC.Если бы у вас было больше случаев (и все еще смежные буквы), я думаю, это будет прилично.

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