Excel VBA:计算当前单元格下方的出现次数,直到表

时间:2018-01-08 10:41:38

标签: excel vba excel-vba excel-formula

我希望使用VBA计算列中每个项目的出现次数。但我想制作一个减少的计数器,即计算剩余单元格中的出现次数

我在

列中有以下内容
Column1
ABCD
ABCD
ABCD
XXXX
XXXX
YYYY
YYYY
YYYY

我希望在此表中再添加一列来计算。理想情况下,在我的公式之后,它应该看起来像这样

Column1 Computed
ABCD    2
ABCD    1
ABCD    0
XXXX    1
XXXX    0
YYYY    2
YYYY    1
YYYY    0

我尝试在VBA中使用R1C1格式的公式

"=COUNTIF(R[0]C[-1]:R[35000]C[-1],[@Column1])"

35000是一个任意值,因为我不知道如何在表结束前查找条目数。我想在表列的其余单元格中找到当前单元格值的出现,以便填充计数。

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题。 LastRow给出最后一行(你的35000)和如果这样写的计数应该给出剩余的出现次数

Dim LastRow As Long
LastRow = mainWS.Range("A" & Rows.Count).End(xlUp).Row

Range("B3").FormulaR1C1 = "=COUNTIF(R[1]C[-1]:R" & LastRow & "C1,RC[-1])"

因为在Excel中更容易理解公式,所以我也在下面写下:

=COUNTIF(A2:$A$35000;A1)

答案 1 :(得分:0)

假设您的数据位于A列并从Row2开始,并且您希望将公式放在B列中,那么请尝试一下....

Dim lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
'Assuming data starts from Row2 in Column A and you want to place the formula in column B
Range("B2:B" & lr).formula = "=COUNTIF(A3:$A$" & lr + 1 & ",A2)"