Счетчик вложенности VBA внутри инструкции If

#excel #vba

#excel #vba

Вопрос:

Используя VBA, у меня есть формула countifs, которая возвращает число в зависимости от значения ячейки F3. F3 — это проверка данных. Я могу выбирать отдельные случаи с помощью моей формулы, но у меня возникают проблемы с выбором значений «все». В результате исследования я придумал «*» в качестве значения, чтобы извлечь все (подстановочный знак). Условное форматирование не позволит мне замаскировать имя как что-то другое из-за того, что оно является звездочкой. Есть идеи о том, как отобразить имя как что-то другое или изменить мою формулу, чтобы вывести все имена в столбце AF? Большое вам спасибо! Мэтт.

 Sheets("Macro").Range("M54") = _
    Application.WorksheetFunction.CountIfs(.Range("E5:E" amp; finRow), _
         "=Addition", .Range("N5:N" amp; finRow), _
         "=" amp; Sheets("Macro").Range("$D$3").Value, .Range("AF5:AF" amp; finRow), _
         "=" amp; Sheets("Macro").Range("$F$3").Value)
  

Комментарии:

1. Проблема в формуле или в том, как вы выполняете условное форматирование?

2. Я не могу условно форматировать с помощью *. Я надеюсь, что кто-нибудь может знать другой способ отображения текста, отличного от значения в той же ячейке. Если нет, я надеюсь на предложение о том, как переформатировать формулу, чтобы я мог выбирать отдельные слова или все слова в столбце AF в зависимости от того, что я ввожу в поле проверки данных. Спасибо за ответ

3. Последняя часть вашего countif не требуется при работе с F3, поэтому вам могут понадобиться 2 countifs и иметь if-оператор или какой-либо переключатель, чтобы решить, КАКОЙ countif вы хотите, будь то тот, который просматривается в столбцах E, N и D, или тот, который требует E, N, D и AF.

Ответ №1:

Если я правильно понимаю вашу проблему (которая заключается в том, что ваш список проверки данных в ячейке F3 в настоящее время работает должным образом с вашим кодом VBA, но вы ищете способ отобразить звездочку как другое слово, например «Все»), то я бы предложил изменить ваш список проверки данных с отображения звездочки на отображение «ВСЕХ» и отредактировать ваш VBA с учетом этого изменения. Например:

 If Sheets("Macro").Range("F3").Value = "ALL" Then

Sheets("Macro").Range("M54") = _
    Application.WorksheetFunction.CountIfs(.Range("E5:E" amp; finRow), _
         "=Addition", .Range("N5:N" amp; finRow), _
         "=" amp; Sheets("Macro").Range("$D$3").Value, .Range("AF5:AF" amp; finRow), _
         "=*")
Else

Sheets("Macro").Range("M54") = _
    Application.WorksheetFunction.CountIfs(.Range("E5:E" amp; finRow), _
         "=Addition", .Range("N5:N" amp; finRow), _
         "=" amp; Sheets("Macro").Range("$D$3").Value, .Range("AF5:AF" amp; finRow), _
         "=" amp; Sheets("Macro").Range("$F$3").Value)
End If
  

Комментарии:

1. Спасибо, Тим. Кодирование сработало отлично! Все еще пытаюсь учиться.