如何计算/合并相同的数据行并将其添加到列中

时间:2015-08-03 09:19:46

标签: excel vba excel-vba merge count

假设我有10,000行数据,如下所示,H1 = Header1

我尝试合并所有相同的列并在最后一列(Header6)中反映出来,即我试图将它们全部添加,折叠重复的行。但是,我面临的困难是这些(包括标题6)是文本而不是数字。最好使用excel VBA(数据必须是excel)

  H1      H2      H3      H4      H5      H6

  AA      BB      EE      HH      KK      1*
  AA      CC      EE      GG      KK      1*
  AA      CC      EE      GG      KK      1*
  AA      CC      EE      GG      KK      1*
  AA      DD      FF      HH      KK      1*
  AA      DD      FF      HH      KK      1*

标准是所有字段header1header5必须相同,并将其添加到header6中。此方案的结果应如下所示:

  H1      H2      H3      H4      H5      H6

  AA      BB      EE      HH      KK      1*
  AA      CC      EE      GG      KK      3*
  AA      DD      FF      HH      KK      2*

我尝试了很多方法但无济于事。我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

Sub TEST()
    Dim Dic As Object, Cl As Range, i&, s$, key As Variant
    Set Dic = CreateObject("Scripting.Dictionary")
    Dic.comparemode = vbTextCompare
    i = Cells(Rows.Count, "A").End(xlUp).Row
    For Each Cl In Range("A2:A" & i)
        s = Cl & "|" & _
            Cl.Offset(, 1) & "|" & _
               Cl.Offset(, 2) & "|" & _
                  Cl.Offset(, 3) & "|" & _
                Cl.Offset(, 4) & "|" & _
            Cl.Offset(, 5)
        If Not Dic.exists(s) Then
            Dic.Add s, 1
        Else
            Dic(s) = CLng(Dic(s)) + 1
        End If
    Next Cl
    Worksheets.Add
    i = 2
    [A1:F1].Value = Split("H1|H2|H3|H4|H5|H6", "|")
    For Each key In Dic
        Range(Cells(i, "A"), Cells(i, "E")).Value = Split(key, "|")
        Cells(i, "F") = Dic(key)
        i = i + 1
    Next key
End Sub

来源

enter image description here

目标

enter image description here