返回列表 上一主題 發帖

[發問] 請問如何連結並複製外部資料

[發問] 請問如何連結並複製外部資料

本帖最後由 icefire722 於 2011-11-3 10:36 編輯

請教各位大大,我有指定巨集給按鈕去搜尋指定儲存格(B3)輸入的資料,搜尋不同工作表裡的資料並COPY到第一個工作表裡指定的指定的儲存格
這部份小弟有寫出來,想請教各位大大一些問題,還請不吝指教
1. 工作表(IQC查詢)這邊,如果再輸入新的要查詢資料的值,原本的欄位資料會被蓋掉,請問有什麼方法解決?
2. 如果要從儲存格(B7&C7)的值再去搜尋其他資料夾堛慟XCEL檔案,找到符合字串的檔名並複製指定儲存格裡的值到工作表(IQC查詢)相同欄位名稱裡的值?

請各位大大看附件資料,因為要搜尋的檔案有很多,小弟先放幾個讓各位大大可以參考


謝謝!

資料查詢.zip (409.25 KB)

資料查詢資料夾

本帖最後由 luhpro 於 2011-11-3 21:55 編輯
1. 工作表(IQC查詢)這邊,如果再輸入新的要查詢資料的值,原本的欄位資料會被蓋掉,請問有什麼方法解決?
icefire722 發表於 2011-11-2 19:42

要讓它不覆蓋前查資料的方法我想到的有兩種:
1. 每次都找最後一行資料, 然後新增到其底下一行.(查詢資料列號會一直累加下去)
  1. Sub DateButton_Click()

  2. Dim srcRange As Range, fndRange As Range
  3. Dim fstAddress As String, CurRow As Long
  4. Sheets("IQC查詢").Select
  5. Set srcRange = Sheets("每日IQC").Range("A19").CurrentRegion.Columns(3)
  6. Set fndRange = srcRange.Find(what:=Range("B3").Value)
  7. If Not fndRange Is Nothing Then
  8.     fstAddress = fndRange.Address
  9.     CurRow = Cells(7, 1).End(xlDown).Row + 1
  10.     Do
  11.         Cells(CurRow, 1).Value = fndRange.Offset(, -2).Value
  12.         Cells(CurRow, 2).Value = fndRange.Offset(, 0).Value
  13.         Cells(CurRow, 3).Value = fndRange.Offset(, 2).Value
  14.         Set fndRange = srcRange.FindNext(after:=fndRange)
  15.     Loop Until fndRange.Address = fstAddress
  16. Else
  17.     MsgBox "無此批號!!"
  18. End If
  19. End Sub
複製代碼
2. 記錄最後一列列號, 每次新增後將該列號加1.(每次重開檔列號會重新從第7列開始)
  1. Public CurRow As Long
  2. Option Explicit

  3. Sub DateButton_Click()
  4. Dim srcRange As Range, fndRange As Range
  5. Dim fstAddress As String
  6. CurRow = CurRow + 1 - (CurRow < 6) * 6
  7. Sheets("IQC查詢").Select
  8. Set srcRange = Sheets("每日IQC").Range("A19").CurrentRegion.Columns(3)
  9. Set fndRange = srcRange.Find(what:=Range("B3").Value)
  10. If Not fndRange Is Nothing Then
  11.     fstAddress = fndRange.Address
  12.     Do
  13.         Cells(CurRow, 1).Value = fndRange.Offset(, -2).Value
  14.         Cells(CurRow, 2).Value = fndRange.Offset(, 0).Value
  15.         Cells(CurRow, 3).Value = fndRange.Offset(, 2).Value
  16.         Set fndRange = srcRange.FindNext(after:=fndRange)
  17.     Loop Until fndRange.Address = fstAddress
  18. Else
  19.     MsgBox "無此批號!!"
  20. End If

  21. End Sub
複製代碼
看看是否符合你的需求.

題外話 :
若需要用變數來存放列號以便使用時不建議用 Integer ,
因為它只能存到 32767 ,
距離舊版 Excel 的最大列號 65536 是不夠用的.

TOP

回復 2# luhpro


    感謝大大,小弟試試看,如有不懂的地方再跟大大請教

謝謝

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題