返回列表 上一主題 發帖

[發問] 對比不相同的資料

回復 1# john2006168
  1. Sub Ex()
  2. Dim Ar()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set dc1 = CreateObject("Scripting.Dictionary")
  5. With Sheet1
  6.    For Each a In .Range(.[A2], .[A65536].End(xlUp))
  7.        d(a.Value) = a.Offset(, 1)
  8.    Next
  9.    For Each a In .Range(.[D2], .[D65536].End(xlUp))
  10.        dc1(a.Value) = a.Offset(, 1)
  11.    Next
  12. End With
  13. Sheet2.Columns("A:E") = ""
  14.    For Each ky In d.keys
  15.       If d(ky) <> dc1(ky) And d(ky) <> "" Then
  16.          ReDim Preserve Ar(s)
  17.          Ar(s) = Array(ky, d(ky))
  18.          s = s + 1
  19.       End If
  20.     Next
  21.     If s > 0 Then Sheet2.[A1].Resize(s, 2) = Application.Transpose(Application.Transpose(Ar))
  22.     s = 0: Erase Ar
  23.    For Each ky In dc1.keys
  24.       If d(ky) <> dc1(ky) And dc1(ky) <> "" Then
  25.          ReDim Preserve Ar(s)
  26.          Ar(s) = Array(ky, dc1(ky))
  27.          s = s + 1
  28.       End If
  29.     Next
  30.     If s > 0 Then Sheet2.[D1].Resize(s, 2) = Application.Transpose(Application.Transpose(Ar))
  31. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 4# sping
  1. Sub 同工作表不同欄位之比對()
  2. Dim Ar(), Ay()
  3. Set d = CreateObject("Scripting.Dictionary")
  4. Set d1 = CreateObject("Scripting.Dictionary")
  5. Set d2 = CreateObject("Scripting.Dictionary")
  6. With Sheets("同工作表之比對")
  7. For Each a In .Range(.[A3], .[A65536].End(xlUp))
  8.    d(a.Text) = a.Text
  9.    d2(a.Text) = a.Text
  10. Next
  11. For Each a In .Range(.[B3], .[B65536].End(xlUp))
  12.    d1(a.Text) = a.Text
  13.    d2(a.Text) = a.Text
  14. Next
  15. ReDim Preserve Ar(s): Ar(s) = "相同Name": s = s + 1
  16. ReDim Preserve Ay(k): Ay(k) = "不同Name": k = k + 1
  17. For Each ky In d2.keys
  18.   If d.exists(ky) = True And d1.exists(ky) = True Then
  19.   ReDim Preserve Ar(s) '相同
  20.   Ar(s) = ky
  21.   s = s + 1
  22.   Else
  23.   ReDim Preserve Ay(k) '不同
  24.   Ay(k) = ky
  25.   k = k + 1
  26.   End If
  27. Next
  28. Range("c3:d65536") = ""
  29. .[c2].Resize(s, 1) = Application.Transpose(Ar)
  30. .[d2].Resize(k, 1) = Application.Transpose(Ay)
  31. End With
  32. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 6# GBKEE


    有文字符號'存在
用資料剖析讓'消失即可恢復正常
學海無涯_不恥下問

TOP

原因是你的a:d欄空格含有看不見字元
用資料剖析把文字辨識符號取消即可

學海無涯_不恥下問

TOP

回復 10# GBKEE
沒有正規方法
當我發現整欄會被認為有資料時
而且CODE函數讀取內容卻會出錯,就知道含有不可見字元
要清除它不是用delete就是用資料剖析最快
學海無涯_不恥下問

TOP

不同檔案間做比對就必須兩個檔案都在開啟狀態下讀取資料比對
不妨將檔案上傳以便了解資料結構
學海無涯_不恥下問

TOP

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