#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. Спасибо, Тим. Кодирование сработало отлично! Все еще пытаюсь учиться.