標題:
[發問]
不同資料比字串比較
[打印本頁]
作者:
nyboy
時間:
2018-2-4 13:49
標題:
不同資料比字串比較
請問有前輩們能幫我解答一下嗎?
小弟是程式(VBA)新手,目前想寫一個小程式來檢查來源資料是否有出現例外字串
請見附件test_compare.rar。
想比對Sheet1 的 C 欄字串是否有跟vendorcode上面任何一個字串都不符合的,要是有不符合的就寫在comp_rslt資料表。
目前sheet1的C11與C12都是應該被程式發現並印在comp_rslt的字串,但是執行之後都會印出任一個字串(不應該被印出來因為vendorcode上有)
請問是哪邊弄錯了呢可否給小弟一些提示,感謝!
Sub compare()
'
'來源資料的欄位數
k = Sheets("sheet1").Cells(104689, 3).End(xlUp).Row
'比較資料的欄位數
p = Sheets("vendorcode").Cells(104689, 1).End(xlUp).Row
For n = 2 To k
C = 1
For m = 1 To p
'要是來源資料有哪一欄和比較資料不同,就列在比較結果資料表comp_rslt中
If InStr(Sheets("sheet1").Cells(n, 3), Sheets("vendorcode").Cells(m, 1)) = 0 Then
Sheets("comp_rslt").Cells(C, 1).Value = Sheets("sheet1").Cells(n, 3)
End If
C = C + 1
Next
Next
End Sub
複製代碼
作者:
GBKEE
時間:
2018-2-4 15:02
回復
1#
nyboy
試試看
Option Explicit
Sub Ex()
Dim Ar As Variant, E As Range, St As String
With Sheets("vendorcode")
Ar = Application.Transpose(.Range("a1", .Range("a1").End(xlDown)).Value) ' Application.Transpose 轉置
Ar = "," & Join(Ar, ",") & "," '一維陣列轉為字串
End With
With Sheets("SHEET1")
For Each E In .Range("C2", .Range("C2").End(xlDown))
If InStr(Ar, "," & E & ",") = 0 Then St = St & "," & E '記錄在字串中
Next
End With
If St <> "" Then
Ar = Split(Mid(St, 2), ",") '字串轉為一維陣列
Sheets("comp_rslt").Range("A1").Resize(UBound(Ar) + 1) = Application.Transpose(Ar)
End If
End Sub
複製代碼
作者:
nyboy
時間:
2018-2-4 16:36
可以了 太感謝版主!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)