2014-04-24 198 views
0

我正在尝试编写一个宏,它将在一列中选择相同的所有值,跨两列移动,然后将这些单元格中的所有数据合并为一个。然后我需要它重复,直到一切都结合起来。识别和组合多个单元格

1  122 
1  121 
2  351 
3  351 
3  352 
4  176 
9.1 350 
10 351 
10 352 

如果这是我们的原始数据,我需要在第一列中选​​择1所有数值,偏移我选择两列,然后结合这些细胞合为一体。然后我需要在列A上运行重复功能以删除所有备用单元并给出一个直接列表。我希望它可以像这样:

1  122, 121 
2  351 
3  351, 352 
4  176 
9.1 350 
10 351, 352 

起脚的是,这需要发生了未知数量均列A值的未知的次数(因为我们有不同数量的组)和列B(以各组中有一个不同的数目的值。

任何帮助,将大规模理解。

谢谢

阿伦拉姆齐

+0

您是否尝试过任何代码?如果有的话请发布。 – RubberDuck

+0

嘿,艾伦 - 自然我不知道它在你的业务流程中的位置,但是如果你没有将这个“重新编码”的信息传递给另一个程序,你可能想看看Excel的内置功能称为数据透视表。数据透视表将通过对行进行分类来帮助您以这种方式可视化数据:http://office.microsoft.com/en-us/excel-help/quick-start-create-a-pivottable-report-HA010359471.aspx –

回答

0

试试看,它有单独的输入和输出表:

Sub RePackage() 
    Dim N As Long, K As Long, i As Long 
    Dim s1 As Worksheet 
    Dim s2 As Worksheet 
    Set s1 = Sheets("Sheet1") 
    Set s2 = Sheets("Sheet2") 
    s2.Range("B:B").NumberFormat = "@" 
    N = s1.Cells(Rows.Count, "A").End(xlUp).Row 
    s2.Cells(1, 1).Value = s1.Cells(1, 1).Value 
    s2.Cells(1, 2).Value = s1.Cells(1, 2).Text 
    v = s1.Cells(1, 1).Value 
    K = 1 
    For i = 2 To N 
     If s1.Cells(i, 1).Value = v Then 
      s2.Cells(K, 2).Value = s2.Cells(K, 2).Text & "," & s1.Cells(i, 2).Text 
     Else 
      K = K + 1 
      s2.Cells(K, 1).Value = s1.Cells(i, 1).Value 
      s2.Cells(K, 2).Value = s1.Cells(i, 2).Text 
      v = s1.Cells(i, 1).Value 
     End If 
    Next i 
End Sub