2014-02-26 68 views
0

如何將一個Excel工作表中的列中的唯一值複製到使用vba代碼的另一個Excel工作表中的行中?從列到行復制唯一值

我有在其中包含duplictes Sheet 1中塔B的值的列表,我想將其複製到片材2行1沒有重複, 我曾嘗試:

Public Sub Test() 

ActiveSheet.Range("B2:B65536").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets(2).Range("D1"), Unique:=True 

End Sub 

但它不工作和也不會使用不是所有列都包含值的事實。

我該怎麼做?

+0

這以前的答案應該是幫助:http://stackoverflow.com/a/7440911/2119523 –

+0

謝謝你, 我已經看到這個評論,並想知道需要做什麼調整複製到一行而不是列 – user3350919

回答

0

嘗試MAIN

Sub MAIN() 
    Dim N As Long 
    Dim cl As Collection 
    N = ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row 
    Set cl = MakeColl(ActiveSheet.Range("B1:B" & N)) 
    Call FillRange(Sheets(2).Range("D1:IV1"), cl) 
End Sub 

Public Function MakeColl(rng As Range) As Collection 
    Set MakeColl = New Collection 
    Dim r As Range 
    On Error Resume Next 
    For Each r In rng 
     v = r.Value 
     If v <> "" Then 
      MakeColl.Add v, CStr(v) 
     End If 
    Next r 
End Function 

Sub FillRange(rng As Range, col As Collection) 
    Dim I As Long, r As Range, J As Long 
    I = 1 
    J = col.Count 
    For Each r In rng 
     MsgBox r.Parent.Name & r.Address(0, 0) 
     r.Value = col.Item(I) 
     If I = J Then Exit Sub 
     I = I + 1 
    Next r 
End Sub 
0

子getUnique()

昏暗OWS作爲工作表:設置OWS = ActiveSheet 昏暗ORG作爲範圍:設置ORG = oWs.Range( 「B2:B65536」 ) 昏暗oRg_tmp作爲範圍

oRg.AdvancedFilter操作:= xlFilterInPlace,唯一:=真

對於每個oRg_tmp在oRg.Rows.SpecialCells(xlCellTypeVisible).Rows MSGBOX 「下面有一排,現在抓住你想要的東西:」 & oRg_tmp.row 接下來

末次