У меня есть написанная мной функция VBA, которая называется CalculateOverStrings(Values as Range)
.Функция в основном принимает диапазон ячеек, содержащих строки, подсчитывает каждую из них, сопоставленную с различными условиями, например, содержит ли она букву «A» и т. Д., И возвращает строковое значение.Я сталкиваюсь с проблемой, когда получаю счетчик только первого элемента в диапазоне, соответствующем условиям.
Как я это называю: CalculateOverStrings(INDIRECT({"A1", "B2", "D4"})
.В этом случае он вернет только результат COUNTIF, глядя на «A1».
Из моего исследования я понял, что это потому, что мне нужно использовать SUM
из COUNTIF
для работы с несколькими диапазонами.Тем не менее, я не могу заставить это работать в VBA.
Вот моя функция:
Function CalculateOverStrings(Values As Range) As String
Dim Result As Result
Dim NumA As Integer
NumA = Application.WorksheetFunction.Sum(Application.WorksheetFunction.CountIf(Values, "*a*"))
CalculateOverStrings = ResultToStr(ResultFromCount(NumA))
End Function
NumA
всегда заканчивается как 1
или 0
в зависимости от того, содержит ли первый диапазон, переданный функции, a
илине.Как правильно применить SUM
в VBA для достижения того же результата, что и здесь и других подобных вопросов?