簡體   English   中英

Excel-VBA檢查工作表是否包含

[英]Excel-VBA Check If Sheet Contains

基本上,我需要比較訂單號,如果與未完成的工作表中的訂單號匹配,則將其添加到工作表1中。

例如。

sheet 1 contains:
OR1545  
OR1687  
OR898   
OR0142

未完成的工作表包含。

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

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

因此,工作表1上的最終輸出為:

OR0142  615     6544D   897EEA
OR898   645DD   6684D8D

這是使用公式:

=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)))),"")

上面是在Cell C2使用Ctrl + Shft + Enter輸入Array Formula ,並將其復制到感興趣的其余單元格中。
假設您的數據組織如下:

工作表Sheet1:
工作表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

雖然沒有測試。
因此,請對重復數據進行安全性測試。
希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM