返回列表 上一主題 發帖

[發問] 資料庫比對的問題

回復 4# fusayloveme

其實一開始就覺得題目怪怪的(或者說你沒把題目,功能講清楚;或者說我理解能力不夠,沒把你的說明弄清楚)
1.A資料庫,B資料庫是否只比對A欄位(ControlNO)?
  若是:A欄位(ControlNO)下的內容有重覆的,那要如何比對?  這就是我一開始只比對數量差異的原因
  若否:除A欄位外,應把B欄位C欄位呈現出來
2.你3F,4F所講的我也不了解意思

TOP

本帖最後由 fusayloveme 於 2012-3-12 17:45 編輯

回復 2# register313

不好意思~另外在補充一下,提供的那個資料比對巨集檔案,較無法適用的原因是,欄位不同,他則會判定是為不符合,
但實際上可能只是在B資料庫內插入一行或者少一行,就導致此情況發生,不曉得利用VBA的一些語法能否避免如此情況發生呢,就是如果能夠不看排列順序,
但A攔、C攔、E攔如果錯誤,則整列錯誤,不曉得能否依照這樣的方式進行判定呢!? 謝謝。

TOP

本帖最後由 fusayloveme 於 2012-3-12 09:13 編輯

回復 2# register313

先謝謝register313大大 ^_^,因為小弟我表達的可能不清楚,我將我的結果如EXCEL顯示,大概是這樣,有A與B資料庫(以A資料庫為母體),
但我需要將A跟B資料庫不同的地方比對出來,將結果分為A資料庫缺少、B資料庫缺少、A與B資料庫都有的以及A與B資料庫都缺少的,
這四種型式,結果如我EXCEL內容所示,另外若再[ControlNO]這個欄位,一開始與A資料庫(母體)有出入,意思就是有錯誤的話,
則一整列都是錯的(如我所標示的黃色方塊),基本方向大概是這樣,不曉得是否能利用VBA做到呢,網路上有下載一個與我想法接近的巨集,
提供給register313大大以及各位大大參考。

謝謝register313大大,筆數的差異的確對我也是很有幫助 ^_^

A與B資料庫範例.rar (10.56 KB)    
資料比對範例.rar (570.18 KB)

TOP

回復 1# fusayloveme
  1. Sub xx()
  2. Sheets("A資料庫").Select
  3. Set SourceA = Sheets("A資料庫").Range([A2], [A65536].End(xlUp))
  4. Sheets("B資料庫").Select
  5. Set SourceB = Sheets("B資料庫").Range([A2], [A65536].End(xlUp))
  6. For Each A In SourceA
  7.   X = Application.CountIf(SourceB, A) - Application.CountIf(SourceA, A)
  8.   If X <> 0 Then
  9.      Set RFind = Columns("E").Find(A, , , xlWhole)
  10.      If RFind Is Nothing Then
  11.        [E65536].End(xlUp).Offset(1, 0) = A
  12.        [E65536].End(xlUp).Offset(0, 1) = X
  13.      End If
  14.   End If
  15. Next A
  16. For Each B In SourceB
  17.   X = Application.CountIf(SourceB, B) - Application.CountIf(SourceA, B)
  18.   If X <> 0 Then
  19.      Set RFind = Columns("E").Find(B, , , xlWhole)
  20.      If RFind Is Nothing Then
  21.        [E65536].End(xlUp).Offset(1, 0) = B
  22.        [E65536].End(xlUp).Offset(0, 1) = X
  23.      End If
  24.   End If
  25. Next B
  26. End Sub
複製代碼

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題