2014-04-04 44 views
1

基本上,我需要比較的訂單號碼,如果它的出色表匹配,把它添加到表1.Excel的VBA檢查表中包含

例如。

 
sheet 1 contains: 
OR1545 
OR1687 
OR898 
OR0142 

優秀的表單包含。

 
OR898 6684D8D 
OR0142 6544D 
OR0142 8489DD 
OR0142 897EEA 

因此,工作表1將檢查未完成的工作表並將項目添加到OR列。
如果有多個項目要轉到下一列。

所以在片材1的最終輸出將是:

 
OR0142 615  6544D 897EEA 
OR898 645DD 6684D8D  
+0

而你需要VBA來做到這一點?我認爲這可以使用公式來完成。 – L42

+0

我想在VBA中使用它的唯一原因是我在很多工作表上使用它。儘管 – Wessel

+0

我對這兩種解決方案都開放我們正在討論這裏有多少行?這將有助於決定走哪條路。 :) – L42

回答

1

這裏使用下式:

=IFERROR(TRANSPOSE(INDEX(Sheet2!$B$1:$B$5,SMALL(IF(Sheet2!$A$1:$A$5=$A2,ROW(Sheet2!$A$1:$A$5)),COLUMN(A$1)))),"")

以上是Array Formula使用輸入Ctrl鍵 + SHFT + 輸入 in Cell C2並複製到其餘感興趣的單元格。
假設你的數據被組織象下面這樣:

Sheet 1中:
Sheet1

突出片:
Sheet2

下面是代碼:

Sub test() 

Dim ws1 As Worksheet, ws2 As Worksheet 
Dim myfilters 
Dim myfilter 
Dim rng1 As Range, rng2 As Range 

Set ws1 = Sheet3 
Set ws2 = Sheet2 

Application.ScreenUpdating = False 

With ws1 
    Set rng1 = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp)) 
    myfilters = rng1.Offset(1, 0).Resize(rng1.Rows.Count - 1) 
End With 

With ws2 
    .AutoFilterMode = False 
    Set rng2 = .Range(.Range("A1"), .Range("A" & .Rows.Count).End(xlUp)) 
    For Each myfilter In myfilters 
     rng2.AutoFilter Field:=1, Criteria1:=myfilter 
     rng2.Offset(1, 1).SpecialCells(xlCellTypeVisible).Copy 
     rng1.Find(myfilter, rng1(1)).Offset(0, 2).PasteSpecial xlPasteValuesAndNumberFormats, , , True 
     .AutoFilterMode = False 
    Next 
End With 
Application.CutCopyMode = False 
Application.ScreenUpdating = True 

End Sub 

雖然未經測試。
因此,爲了安全起見,請在重複數據中進行測試。
希望這會有所幫助。