Каков правильный синтаксис для показателей в VBA, где один аргумент имеет критерии ИЛИ? - PullRequest
0 голосов
/ 19 мая 2019

У меня действительно два вопроса:

  1. Почему с этой строкой все в порядке -

Result = Application.WorksheetFunction.CountIfs(Range("AF:AF"), "GroupA", Range("AJ:AJ"), "Passing")

Но это не так?

Result = Application.WorksheetFunction.CountIfs(Range("L:L"), "11", (Range("AF:AF"), "GroupA", Range("AJ:AJ"), "Passing")

Когда я пытаюсь добавить эти дополнительные критерии в начало, я получаю сообщение об ошибке, в котором говорится, что в этой части вместо запятой есть ожидаемая скобка -
(Range(:AF:AF"),

Когда я добавляю дополнительные критерии в конец, у меня, похоже, с этим нет проблем.Очень сварливая мелочь.

Причина, по которой я спрашиваю, состоит в том, что я застрял, пытаясь добавить аргумент в код, который использует операторы OR, но я не уверен в правильном синтаксисе.Я пытаюсь подсчитать всех учеников, которые находятся на определенном уровне обучения, которые входят в определенную группу и которые «проходят».

Я пробовал несколько разных вещей, в том числе:

Result = Application.WorksheetFunction.CountIfs(Range("AF:AF"), "GroupA", Range("AJ:AJ"), "Passing", Range("L:L"), "<>" "7" Or "8")

и это

Result = Application.WorksheetFunction.CountIfs(Range("AF:AF"), "GroupA", Range("AJ:AJ"), "Passing", Range("L:L"), "9" Or "10" Or "11" Or "12")

Последний был самым близким, который я получил, поскольку вместо этого он фактически дает значение нольошибки в коде, но я все еще не совсем там.В начале я также попробовал утверждение «если тогда», чтобы отсеять оценку, в которой я нуждался изначально, но этот WAY не сработал и дал мне всевозможные ошибки времени выполнения, из-за которых у меня болела голова.

Я знаю, чтопроблема в аргументах OR, потому что эта строка работает:

AlgAdv = Application.WorksheetFunction.CountIfs(Range("AF:AF"), "GroupA", Range("AJ:AJ"), "Passing", Range("L:L"), "9")

Я видел несколько постов о формулах показателей в Excel, но меньше о показателях в VBA.Из них я видел только один, который ссылался на аргумент ИЛИ, но ответ мне не был ясен.

Есть рекомендации?

Ответы [ 2 ]

2 голосов
/ 19 мая 2019

Вы можете сделать что-то вроде этого:

Result = Application.WorksheetFunction.CountIfs(Range("AF:AF"), "GroupA", _
                                                Range("AJ:AJ"), "Passing", _
                                                Range("L:L"), ">=9", _
                                                Range("L:L"), "<=12")    
1 голос
/ 19 мая 2019

Интересно, может ли эта ссылка помочь: https://stackoverflow.com/a/8726792/11437092 (если, конечно, это уже не та, которую вы видели).

Похоже, вы сможете использовать отдельный COUNTIFфункции в соответствии с количеством аргументов OR, которые вам нужны, а затем просто сложите их вместе.Однако, возможно, это не самый эффективный способ сделать это.

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