2012-09-11 17 views
2

我想組在我的Excel數據以自動的方式(通過使用宏) 例如,在我的柱A,I具有字段掖爲這樣:重組數據自動

    在A1我
  • 有 「1.0.1」,
  • 在A2 「1.0.3」
  • 在A3 「1.0.5」,
  • 在A4 「1.1.1」
  • ,在A5 「1.1.2」

我想分組這些數據,以便有兩個組:1.0(包裝A1,A2和A3)和1.1(包裝A4和A5)。

的問題是,其可以變化的數據(除一個給定1.0.7例如其將是必要的基團(包括)在1.0)

因此,這將是必要的,以讀取所有並且通過比較每個字段的前3個字符來進行重新分組,並且對相同的分組進行分組。

在Visual Basic中可以做到這一點嗎?

+2

是的,它是可能的。每次添加新數據時,只需對數據進行取消組合和排序即可。一旦數據被排序,重組數據。您可能想要記錄宏以查看分組/取消分組是如何工作的? –

+0

你有什麼嘗試?答案是@SiddharthRout說,是的,這是可能的。但是這個網站不是代碼編寫服務 - 請參閱http://stackoverflow.com/questions/how-to-ask – enderland

+0

輔助列可能很有用,例如在'B1'' = MID(A1,FIND(「。」)中。 ,A1)+ 1,FIND( 「 」A1,FIND(「。 」A1)+1) - 查找(「。」,A1)-1)' – pnuts

回答

0
sub regrouper() 
    Worksheets.Add.Name="group1" 
    Worksheets.Add.Name="group2" 
    Dim g1Row As Integer 
    Dim g2Row As Integer 
    Dim splitter(0 to 4) As String 

    g1Row = g2Row = 2 

    For Each cell in Worksheets(1).Range("A1:A" & Range("A65536").End(xlup).Row) 
    splitter = Split(cell.text, ".") 
    If splitter(1) = 0 then 
     Worksheets("group1").Range("A" & g1Row).Value = cell.Value 
     g1Row = g1Row + 1 
    ElseIf splitter(1) = 1 then 
     Worksheets("group2").Range("A" & g2Row).Value = cell.Value 
     g2Row = g2Row + 1 
    Else 
     MsgBox("data not in group 1 or 2") 
    End If 
    Next cell 
End Sub 

未經測試,但應該讓你有點接近