- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
本帖最後由 stillfish00 於 2013-8-1 12:26 編輯
回復 26# happycoccolin
先將 B_0731.xlsx "希望顯示在這欄位" 字樣刪掉儲存關閉後,再執行。- Sub TEST()
- Const DATABASE_NAME = "A" '資料庫工作表名稱
- Const DATABASE_COL = 5 'E欄
- Const COMPARE_COL = 11 'K欄
-
- Dim d, ar, filein, fileout, s, i As Long
-
- Set d = CreateObject("scripting.dictionary")
- ar = Sheets(DATABASE_NAME).[A1].CurrentRegion.Value
- For i = 2 To UBound(ar)
- d(Replace(ar(i, DATABASE_COL), "-", "")) = ar(i, 1)
- Next
-
- filein = Application.GetOpenFilename(Title:="選擇要比對的檔案")
- If Not TypeName(filein) = "String" Then Exit Sub '取消則結束
-
- Application.ScreenUpdating = False
- With Workbooks.Open(filein)
- ar = .Sheets(1).[A1].CurrentRegion.Value
- .Close False
- End With
- Application.ScreenUpdating = True
-
- ReDim Preserve ar(LBound(ar) To UBound(ar), LBound(ar, 2) To UBound(ar, 2) + 1)
- For i = LBound(ar) + 1 To UBound(ar)
- s = Replace(ar(i, COMPARE_COL), "-", "")
- If d.exists(s) Then
- ar(i, UBound(ar, 2)) = d(s)
- Else
- ar(i, UBound(ar, 2)) = "No Data"
- End If
- Next
-
- fileout = Application.GetSaveAsFilename(Title:="另存為新檔")
- If Not TypeName(fileout) = "String" Then Exit Sub '取消則結束
-
- With Workbooks.Add.Sheets(1)
- .[A1].Resize(UBound(ar), UBound(ar, 2)).Value = ar
- .Parent.SaveAs fileout
- End With
- End Sub
複製代碼 |
|