Excel VBA从列表中提取唯一值,并在单独的页面上对其进行计数

Excel VBA从列表中提取唯一值,并在单独的页面上对其进行计数,excel,vba,Excel,Vba,好吧,这一定是有史以来最简单的问题了,但我已经搜索了一段时间,无法找到答案。我在“Page1_1”(shtData)页上有一个很长的值列表,我需要使用它生成一个唯一值列表,以及“数字”上每个唯一值的计数。手动复制到“数字”(shtNumbers)并删除重复项是非常简单的,但是我使用的countif公式占用大量内存,并且会让它陷入困境。我有代码来提供唯一的列表,但试图得到每一项的数量让我感到困惑 简单地说:我需要代码从“Page1_1”(shtData)A2:end of data生成一个唯一值列

好吧,这一定是有史以来最简单的问题了,但我已经搜索了一段时间,无法找到答案。我在“Page1_1”(shtData)页上有一个很长的值列表,我需要使用它生成一个唯一值列表,以及“数字”上每个唯一值的计数。手动复制到“数字”(shtNumbers)并删除重复项是非常简单的,但是我使用的countif公式占用大量内存,并且会让它陷入困境。我有代码来提供唯一的列表,但试图得到每一项的数量让我感到困惑

简单地说:我需要代码从“Page1_1”(shtData)A2:end of data生成一个唯一值列表,并将该列表从“Numbers”(shtNumbers)A2开始并向下,然后计数出现次数并在B2中向下列出计数

当前代码:

shtData.Range("A2:A65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=shtNumbers.Range("A2"), Unique:=True
这段代码完美地为我生成了列表。我会发布我为计数部分得到的信息,但它根本不起作用,所以我怀疑它是否有帮助

谢谢

试试这个:

With shtNumbers

    With .Range(.Range("B2"),.Range("A2").End(xlDown).Offset(,1))

        .FormulaR1C1 = "=COUNTIF(Data!C[-1],RC[-1])" 'change data to actual sheet name

    End With

End With
尝试一下:

Sub SuperSimpleFrequencyTable()
    Dim C As Range, A As Range, B As Range

    Set A = Sheets("Page1_1").Range("A:A")
    Set B = Sheets("Numbers").Range("A:A")

    A.Copy B
    B.RemoveDuplicates Columns:=1, Header:=xlNo
    Set C = B.SpecialCells(xlCellTypeConstants).Offset(0, 1)

    With C
        .Formula = "=countif(Page1_1!A:A,A1)"
        .Value = .Value
    End With

End Sub

它不会在
数字表中留下公式。

为什么不使用透视表呢?我可以,但每次运行此报告时都必须设置透视表,这通常是错误的。使用宏,我只需点击一个命令按钮就可以了。当然,我也认为这很容易编码,所以我知道什么?这正是我需要的!谢谢你的快速回复。