2014-04-24 197 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