Board logo

標題: [發問] 比對後再搬移資料 [打印本頁]

作者: game78214    時間: 2013-10-23 14:31     標題: 比對後再搬移資料

我只要把資料搬移到B檔的欄位,而不是要搬移新的檔案,有誰可以教我修改?

Sub TEST()
  Dim ar, r As Long, i As Long
  Dim cIndexOld, cIndexNew, arNewHeader
  Dim f
  
  cIndexOld = Array(4, 5) 'A檔案中要搬動的欄
  cIndexNew = Array(4, 5)  '搬到B檔位置(欄號)
  arNewHeader = Array("新戶籍地址", "新通訊地址") 'B檔標題名稱
  
  f = Application.GetOpenFilename(FileFilter:="Excel 活頁簿 (*.xls),*.xls", Title:="選擇來源檔案")
  If Not TypeName(f) = "String" Then Exit Sub '取消則結束
  
  Application.ScreenUpdating = False
  With Workbooks.Open(f)
    With .Sheets(1)
      ar = .Range("A2:E" & .[A2].CurrentRegion.Rows.Count).Value
    End With
    .Close False
  End With
  Application.ScreenUpdating = True
  
  r = UBound(ar)
  With Workbooks.Add
    With .Sheets(1)
      For i = LBound(cIndexOld) To UBound(cIndexOld)
        .Cells(1, cIndexNew(i)).Resize(r).Value = Application.WorksheetFunction.Index(ar, 0, cIndexOld(i))
        .Cells(1, cIndexNew(i)).Value = arNewHeader(i)
      Next

    End With
  End With
  

   
End Sub

作者: GBKEE    時間: 2013-10-23 15:20

回復 1# game78214
你說:我只要把資料搬移到B檔的欄位
那就開啟B檔然後放上資料啊.
作者: game78214    時間: 2013-10-23 16:03

回復 2# GBKEE


    是要比對A、B檔案的A、B欄位後,比對到一樣的,在搬移A檔案的D、E欄位資料到B檔案的D、E欄位裡。
   小弟的文法很爛,表達不清,SORRY!
[attach]16460[/attach]
作者: GBKEE    時間: 2013-10-23 16:35

回復 3# game78214
  1. Dictionary 物件
  2. 物件 , 用於儲存資料關鍵字和項目對
複製代碼
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, I As Integer
  4.     Set D = CreateObject("SCRIPTING.DICTIONARY")
  5.     With Workbooks("A.xls").Sheets(1)
  6.         I = 2
  7.         Do While .Cells(I, "A") <> ""
  8.           D(.Cells(I, "A") & .Cells(I, "B")) = Array(.Cells(I, "C"), .Cells(I, "D"))
  9.           I = I + 1
  10.         Loop
  11.     End With
  12.     With Workbooks("B.xls").Sheets(1)
  13.         I = 2
  14.         Do While .Cells(I, "A") <> ""
  15.           If D.EXISTS(.Cells(I, "A") & .Cells(I, "B")) Then .Cells(I, "C").Resize(, 2) = D(.Cells(I, "A") & .Cells(I, "B"))
  16.           I = I + 1
  17.         Loop
  18.     End With
  19. End Sub
複製代碼

作者: game78214    時間: 2013-10-25 09:00

回復 4# GBKEE


    那個我要對比的資料有五萬多筆,所以沒辦法執行耶.....
作者: GBKEE    時間: 2013-10-25 15:07

回復 5# game78214
是那種無法執行(太慢了)
作者: game78214    時間: 2013-10-28 10:10

回復 6# GBKEE


   沒有反應
作者: GBKEE    時間: 2013-10-28 15:01

回復 7# game78214
有測試你 3#上所上傳的檔案嗎?




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)