我会尽量保持简单和不具体。我有三列,a,b,c。Col C 在单元格 C1-C100 中有一百个随机数。Col A 在单元格 C1:C5 中有五个随机数。
对于每个单元格 B1:B5,我想输入 col 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 一次填充整个范围会比循环更快。