VBA, используя COUNTIFS в качестве формулы - PullRequest
0 голосов
/ 01 апреля 2020

Я использую =COUNTIF($B$2:$B$8,">"&$B2)+COUNTIF($B$2:B2,B2) Эта функция для ранжирования в группе. Я пытаюсь использовать его как

Worksheets("A").Range("A1").Formula ="=COUNTIF($B$2:$B$8,">"&$B2)+COUNTIF($B$2:B2,B2)"

, но он возвращает мне True / False, а не функцию. Я хочу написать эту функцию в ячейке и автоматически заполнить ее до последней строки.

Спасибо

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

Что здесь произошло?

Если вы внимательно присмотритесь к своему коду и добавите его в редактор

Worksheets("A").Range("A1").Formula ="=COUNTIF($B$2:$B$8,">"&$B2)+COUNTIF($B$2:B2,B2)"

, он автоматически добавит несколько пробелов, как показано ниже

Worksheets("A").Range("A1").Formula = "=COUNTIF($B$2:$B$8," > "&$B2)+COUNTIF($B$2:B2,B2)"

Таким образом, вы можете ясно видеть, что он состоит из 4 частей:

  1. Worksheets("A").Range("A1").Formula ссылка на формулу ячеек
  2. = оператор
  3. "=COUNTIF($B$2:$B$8," String1
  4. > другой оператор
  5. "&$B2)+COUNTIF($B$2:B2,B2)" String2

Так что получается, что Excel сравнивает 2 строки с >, потому что это не так часть формулы, которая закончилась со вторым ". Так что String1 > String2 - это либо True, либо False.

Решение

Чтобы включить > в формулу, вам нужно удвоить кавычки в строке.

Worksheets("A").Range("A1").Formula = "=COUNTIF($B$2:$B$8,"">""&$B2)+COUNTIF($B$2:B2,B2)"

Теперь "=COUNTIF($B$2:$B$8,"">""&$B2)+COUNTIF($B$2:B2,B2)" рассматривается как одна целая строка.

0 голосов
/ 01 апреля 2020

$ B2 в первом COUNTIF должен быть текстом, чтобы соответствовать ">". Таким образом, формула должна выглядеть примерно так:

Изображение формулы

Надеюсь, это поможет!

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