返回列表 上一主題 發帖

[發問] 有關比對不同EXCEL表中資料的內容,藉以找出重複資料~

回復 1# jiunyanwu
比對組是不同檔案名稱 還是 不同工作表名稱?
不同比對組的資料都是同一欄嗎? 是哪一欄?
附上檔案做例子會比較好解決~

TOP

回復 5# jiunyanwu
新增模組至基準資料庫 , 複製貼上代碼 , 存成xlsm
  1. Sub Test()
  2.     Dim f, i, r
  3.     Dim arName() As String
  4.     Dim wb As Workbook
  5.    
  6.     f = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*),*.xls*", Title:="選擇比對檔案", MultiSelect:=True)
  7.     If Not IsArray(f) Then Exit Sub
  8.    
  9.     With Sheets("基準資料庫")
  10.         For Each it In .Range("A1:A4,B1:B2")    '要篩選的字
  11.             If it <> "" Then
  12.                 If i = 0 Then
  13.                     ReDim arName(i)
  14.                 Else
  15.                     ReDim Preserve arName(i)
  16.                 End If
  17.                 arName(i) = "=""=*" & it & "*"""
  18.                 i = i + 1
  19.             End If
  20.         Next
  21.     End With
  22.    
  23.     Set wb = Workbooks.Add
  24.     With wb
  25.         With .Sheets(1)
  26.             .Name = "Criteria"
  27.             .[A1:C1] = Array("代號", "電話", "資料")    'Write Header
  28.             .[C2].Resize(UBound(arName)).Value = Application.Transpose(arName)  'Write Criteria
  29.         End With
  30.         .Sheets(2).Name = "篩選結果"
  31.     End With
  32.    
  33.    
  34.     r = 1
  35.     For Each it In f
  36.         With Workbooks.Open(it).Sheets(1)
  37.             '進階篩選
  38.             .Range("A1:C6").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=wb.Sheets(1).[A1].CurrentRegion, CopyToRange:=wb.Sheets(2).Range("A" & r), Unique:=False
  39.             .Parent.Close False
  40.         End With
  41.         With wb.Sheets(2)
  42.             If r > 1 Then .Rows(r).Delete xlShiftUp   'Delete Header
  43.             r = .Range("A" & .Rows.Count).End(xlUp).Row + 1
  44.         End With
  45.     Next
  46. End Sub
複製代碼

TOP

        靜思自在 : 得理要饒人,理直要氣和。
返回列表 上一主題