如何在Excel 2007中使用VBA对两列进行排序和计数?

时间:2014-10-09 00:57:29

标签: vba excel-2007

我有一个这样的电子表格:

Item Category |  Customer Category
--------------|-------------------
     A        |         Z
     A        |         Z
     A        |         Y
     B        |         Y
     B        |         Z
     B        |         Z
etc..  on to > 35K rows.  

我正在尝试编写一个VBA模块来计算和合并两列中相同的行,但不断缩短。

我希望输出如下:

Item Category |  Customer Category | Count
--------------|--------------------|------
     A        |         Z          |   2
     A        |         Y          |   1
     B        |         Y          |   1
     B        |         Z          |   2
等等......

这听起来很简单,我在这里找到了很多关于排序和计算更复杂的电子表格的例子,但却找不到我的工作。

1 个答案:

答案 0 :(得分:0)

使用高级过滤器尝试简单方式。

Sub Test()
    Dim rng As Range, lrow As Long
    With Sheet1
        .Columns("E:G").ClearContents: .Range("G1") = "Count"
        Set rng = .Range("A1", .Range("B" & .Rows.Count).End(xlUp))
        rng.AdvancedFilter Action:=xlFilterCopy, _
            CopyToRange:=.Range("E1"), Unique:=True
        lrow = .Range("E" & .Rows.Count).End(xlUp).Row
        With .Range("G2", "G" & lrow)
            .Formula = "=COUNTIFS(A:A,E2,B:B,F2)"
            .Value = .Value
        End With
    End With
End Sub

我认为这对35k来说没问题。因此,每次运行代码时,它都会将 A列和B列中的项目汇总到E到G列。只是为了让您入门。当然,最简单的是由Tim评论的 数据透视表 。 HTH