Я постараюсь сделать это как можно более простым и неспецифическим. У меня три столбца, a, b, c. Col C имеет сто случайных чисел в ячейках C1-C100. Col A имеет пять случайных чисел в ячейках C1: C5.Excel Application.WorksheetFunction.CountIf с использованием относительных ссылок
Для каждой ячейки B1: B5, я хочу указать, сколько раз число в столбце a появляется в col c. Если вы пишете формулу непосредственно в ячейку B1, было бы таким образом:
= COUNTIF ($ C: $ C, $ A1)
Вы бы затем перетащить вниз, чтобы заполнить ячейки B2: B5
Я хочу сделать это с помощью приложения VBA Application.WorksheetFunction.CountIf (мой фактический проект намного сложнее, чем этот, и ячейки необходимо заполнять автоматически).
Dim colb As Range
Set colb = Range("$B1:$B5")
Dim colc As Range
Set colc = Range("$C:$C")
Dim cola As Range
Set cola = Range("$A:$A")
For Each bcell In colb
bcell.Formula = Application.WorksheetFunction.CountIf(colc, bcell.Offset(0, -1))
Next bcell
Это работает правильно. Но мне интересно, можно ли это сделать без цикла For-Each и не указывая, сколько ячеек в B должно быть заполнено (распознавание, когда A достигает своего последнего значения, и соответственно останавливает заполнение B, a la
Dim colb As Range
Set colb = Range("$B:$B")
на мой взгляд, решающая линия будет что-то вроде:
colb.Formula = Application.WorksheetFunction.CountIf(colc, cola)
Но это не работает ли что-то я спрашиваю возможно, я вообразите позволяя Excel заполнить весь диапазон сразу бы.? быстрее, чем зацикливание.
Это будет, и я считал его. Но у меня есть целая куча формул для написания, некоторые из которых чрезвычайно сложны, и у меня нет терпения для построения строк с использованием переменных vb. Вышеприведенный пример является простым примером. Реальность более сложная. – Swiftslide
Можете ли вы показать мне пример сложной формулы, которую вы планируете использовать? –