Я пытался либо в = countif (A $ 1: A $ 118, B2), либо в vba сделать что-то с диапазоном без изменения ячеек, столбца или диапазона перед выполнением формулы, и я не смог. Поэтому я адаптировал код, который нашел для работы с массивом, прежде чем рассчитывать по критериям:
Function countifcode4(rng As Range, crit As String)
cnt = 0
For Each jesepeak In rng
jesepeak2 = Chr(34) & jesepeak & Chr(34) 'so ive changed the range to values - something, in this case "values"
s = jesepeak2 = crit
test = Evaluate(s)
If test = True Then
cnt = cnt + 1
End If
Next
countifcode4 = cnt
End Function
Он выполняет свою работу, но на самом деле это не массив, не так ли? Это для l oop, идущего вниз по диапазону клеток. (и он почти не работает, если выбран весь диапазон A: A, и я запускаю его)
То, что я ищу, - это способ сделать это сразу на VBA. Работайте с диапазоном, не изменяя его внешний вид на листе, и выполняйте бэкэнд контфина, используя другой метод, который я использовал, чем для, если l oop.
как здесь:
скажем B2: B11 имена содержащихся фруктов,
application.WorksheetFunction.CountIf(Range(“B2:B11”,”Apple”))
- Есть ли способ изменить значения в B2: B11 без изменения ячеек B2: B11 и есть ли указатель на этот новый измененный массив?
или здесь:
Var = Application.WorksheetFunction.CountIf(Range("D3:" & c), "Apples-2")
Могу ли я изменить элементы D: D без изменения значений ячеек на рабочем листе, сделать это в vba и без l для 10 * *, (по сути, изменив бэкэнд массива D: D на Fruits-2 или "fruits") и вместо этого ищите Apples-2 или "" Apple ""?