返回列表 上一主題 發帖

[發問] 如何利用VBA一鍵 自動比對工作表A & B的C欄相異號碼?

Sub TEST()
Dim MH, ST, TT$
For Each ST In [B!C2:C1000]
  MH = 0
  If ST <> "" Then MH = Application.Match(ST, [A!C2:C79], 0)
  If IsError(MH) Then TT = TT & "," & ST
Next
If TT <> "" Then MsgBox "相異號碼如下:" & Mid(TT, 2)
End Sub

TOP

本帖最後由 准提部林 於 2015-11-14 11:24 編輯

回復 7# RCRG


For Each ST In [B!C2:C1000]
  MH = 0
  If ST <> "" Then MH = Application.Match(ST, [A!C2:C79], 0)
  If IsError(MH) Then
    If InStr("," & TT & ",", "," & ST & ",") = 0 Then TT = TT & "," & ST
  End If
Next
If TT = "" Then MsgBox "無相異" Else MsgBox "相異號碼如下:" & Mid(TT, 2)

================================
1.InStr("," & TT & ",", "," & ST & ",")
  比對文字要以〔逗號〕前後包覆,否則以 L111222 比對 L111222A 會誤判!
  以 ,L111222, 比對 ,L111222A, 就沒問題∼這與使用 Find 函數同理∼
 
2.If TT = "" Then MsgBox "無相異" Else MsgBox "相異號碼如下:" & Mid(TT, 2)
  If ~~ Then ~~ Else ~~, 這是最簡單基本的判斷

若學 excel 已有一段時間, 上面的程式碼應都可以理解的!

TOP

借用超板的〔陣中陣〕:
Sub TEST()
Dim xD, SS, S
Set xD = CreateObject("Scripting.Dictionary")
For Each SS In Array([B!C2:C1000], [C!C2:C1000])
For Each S In SS
  If S <> "" And Not xD.Exists(S & "") Then xD(S & "") = ""
Next: Next
For Each S In [A!C3:C79]
  If xD.Exists(S & "") Then xD.Remove S & ""
Next
If xD.Count Then MsgBox "相異號碼如下:" & Join(xD.keys, ",") Else MsgBox "無相異"
End Sub

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題