Макросы Excel с параметрами CountIfS - PullRequest
0 голосов
/ 22 апреля 2011

Я пишу программу, которая ищет таблицу, полную данных Олимпийского бокса.Используя комбинированный список, пользователь выбирает страну и весовую категорию, а затем нажимает на кнопку Go!Кнопка, программа вызывает макрос в таблице Excel, который выглядит следующим образом:

Sub paramedals(class As String, country As String)

  MsgBox " Counting by weight class " & class & " and country " & country
  Range("I73").Select
    ActiveCell.FormulaR1C1 = _
    "=COUNTIFS(C[-7], class,C[-6],country,C[-4], ""Gold"")"

End Sub

Я вставил команду msgbox, чтобы убедиться, что она правильно читает параметры - и это так.Проблема в том, что вместо того, чтобы устанавливать параметры формулы для заданных строк, она буквально устанавливает формулу на COUNTIFS (B: B, класс и т. Д.).тот факт, что правильные строки отправляются в макрос, из-за msgbox, он отображается правильно.Можете ли вы просто не использовать параметры для COUNTIFS?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

В качестве альтернативы вы можете заменить

  Range("I73").Select
    ActiveCell.FormulaR1C1 = _
    "=COUNTIFS(C[-7], class,C[-6],country,C[-4], ""Gold"")"

на

  Range("I73").Value = application.WorksheetFunction.CountIf(<your formula>)

Конечно, это работает, только если вы можете показать только значение вместо формулы.

0 голосов
/ 22 апреля 2011

Вам необходимо отделить строковую часть формулы от переменных

Range("I73").FormulaR1C1 = _
"=COUNTIFS(C[-7]," & class & ",C[-6]," & country & ",C[-4], ""Gold"")"

Редактировать:

Обе эти работы, одна - R1C1, адругая - это стандартная формула

Range("I73").FormulaR1C1 = _
"=COUNTIFS(C[-7],""=" & class & """,C[-6],""=" & country & """,C[-4],""=Gold"")"

Range("I73").Formula =  _ 
"=COUNTIFS(B:B,""=" & class & """,C:C,""=" & country & """,E:E,""=Gold"")"

Хороший совет - сначала создать оператор, используя debug.print или msgbox, а затем посмотреть, как он выглядит при входе в ячейку.

...