[問題] 以Excel VBA將 工作表B(新下載資料) 與 工作表A(搜尋表) 做核對...

小弟為編寫程式新手,完全沒有相關科系背景...
因工作需要,必須學習使用Java編寫網頁和Excel VBA編寫日常工作巨集...

此案以Excel VBA將 工作表B(新下載資料) 與 工作表A(搜尋表) 做核對
若 工作表A 沒有 工作表B 的資料
就會複製 工作表B 的資料到 工作表A 的最下方空白處

目前問題卡在 當我執行的時候
會複製 工作表B 的 第4筆資料,貼到 工作表A 的 第4筆資料(第4列的意思)
不是我要的結果...
但花了很多時間和查了很多資料,並沒有找到一個合適的解決方案或是取代的方案...

希望高手指點~ >"<

附上VBA巨集:

Sub 新下載資料match()
'建立 沒有限制大小/沒有限制內容物 的巨集 新下載資料match
'新下載資料比對舊資料找無則新增

Dim LA As Long, LB As Long
'宣告 變數LA 屬於 Long這個類型的資料,宣告 變數LB 屬於 Long這個類型的資料
'Long 是數值屬於正負整數 2147483648 (Long是長整數,資料量大的時候適用,但效能降低)
Dim k As Long, i As Long
'宣告 變數k 屬於 Long這個類型的資料,宣告 變數i 屬於 Long這個類型的資料

ActiveWorkbook.Worksheets("搜尋表").Select
'選擇 當前的活頁簿,的 "搜尋表" 工作表
'Select 有選擇 或 點選的意思
LA = Worksheets("搜尋表").Range("C500000").End(xlUp).Row
'變數LA = "搜尋表" 工作表,的 單格 C500000 到 C500000 最上方邊緣,的全列所有資料

ActiveWorkbook.Worksheets("新下載資料").Select
'選擇 當前的活頁簿,的 "新下載資料" 工作表
LB = Worksheets("新下載資料").Range("C500000").End(xlUp).Row
'變數LB = "新下載資料" 工作表,的 單格 C500000 到 C500000 最上方邊緣,的全列所有資料

For i = 2 To LB
'重複執行 陣列i 且 i=2到LB 的所有格數
Sheets("新下載資料").Select
'選擇 "新下載資料" 工作表
'Sheets = 所有活頁簿 但又指定 "新下載資料" 所以 Sheets("新下載資料") 跟 Worksheets("新下載資料") 是同一個意思
Cells(i, 2).Select
'選擇 單格 (i,2)

If Cells(i, 2).Value = "" Then Exit For
'若 單格(i,2),的 值 = 空值
'則 跳出 當前迴圈(For i)

For k = 2 To LA
'重複執行 陣列k 且 k=2到LA 的所有格數
If Worksheets("新下載資料").Cells(i, 2).Value = Worksheets("搜尋表").Cells(k, 2).Value Then Exit For
'若 "新下載資料" 工作表,的 單格(i,2),的 值 = "搜尋表" 工作表,的 單格(k,2),的 值
'則 跳出 當前迴圈(For k)
If Cells(k, 2).Value = "" Then
'若 單格(k,2),的 值 = 空值
'則 執行下列指令
'備註:跳出迴圈 For 的指令,不算在 If跟End If 之間的 迴圈,故不需用Else If
Rows(i).Select
'選擇 列(i)
Rows(i).Copy
'複製 列(i)
Sheets("搜尋表").Select
'選擇 "搜尋表" 工作表
ActiveSheet.Paste Rows(k)
'對 列(k) 做 貼上的動作

End If
'結束迴圈 (If->End If是一個完整的迴圈,1個完整的條件式動作)
Next
'變數i+1,繼續執行迴圈,直到 i=LA 終止 (通常會省略Next i中的i)
Next
'變數i+1,繼續執行迴圈,直到 i=LB 終止 (通常會省略Next i中的i)

'整個巨集的意思就是,將 "新下載資料"工作表 第一筆資料(i) 與 "搜尋表"工作表 第一筆資料(k) 做 核對
'若有吻合 就跳出迴圈 讓下一筆(i+1) 與 (k) 重新核對
'若沒有吻合 就將(i) 與 下一筆(k+1) 繼續核對
'若(i) 與 整個 "搜尋表"工作表 的資料(k=2...LA) 都不吻合,就將 該列(i) 複製 貼到 列(k)=空值 的地方
'因為是照順序核對,所以會貼到由上至下的第一個空格處
'貼上後,(i+1) 開始 繼續 核對,直到 (i)=LB 為止

End Sub

由於是新手
需要提醒和方便後人接手
故寫了很多註釋和自己的理解...
可能會看的不習慣~ >"<
但是因為可以檢查是否我理解錯誤... 還是附上去了~

附上工作表A(示意圖):


附上工作表B(示意圖):


做這個VBA巨集的起因...
是因為主管要求要在公司的網路磁碟機裡,
用Excel VBA建構一套搜尋系統...
功能目前有:
1. 半自動抓取指定資料夾的所有檔案(B欄)
2. 半自動將抓取後的檔案,超連結到該檔案(C欄)
3. 純手動複製檔案裡文字的部分,貼到工作表中(D欄)
4. 半自動抓取新增資料夾的檔案(工作表B),並與舊資料(工作表A)核對,若A沒有,就將A貼到B的最下方空白處
5. 搜尋關鍵字,可將包含關鍵字的檔案列表,後面還標示該檔案包含的文字內容(也會搜尋內容),功能類似Google蒐尋器
PS:半自動就是手動選擇欲執行的巨集

目前大概是這樣...
未來可能還會:
1. 統計那些關鍵字比較多人查詢
2. 那些檔案常常被調閱
3. 誰常常在使用搜尋器
(如果我或後人寫得出來的話)

目前卡在Match核對的部分,不知道哪裡出錯,懇請高手協助指點,或是可以精簡巨集... >"<
感恩!!!
2018-09-07 14:47 發佈
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?