返回列表 上一主題 發帖

VBA如何比對儲存格特定字串

回復 1# lumark1976


請問這有比較明確規則嗎?
1. 因為shielding 要找shiel 或 shieldi 或 shildin .... ,
2. SCREW(M3*6) 要找 SCREW M3 或 SCREW M3*6 ....,

TOP

Sam大大,如果比對出有與G欄一樣的字串就好,有辦法做到嗎?感謝!!
lumark1976 發表於 2022-11-29 08:39


請測試看看,謝謝
Sub test()
Dim Arr, Brr, T$, i&, i2&
Arr = Range([c1], [b65536].End(3))
Brr = Range([g1], [g65536].End(3))
For i = 2 To UBound(Brr)
    T = UCase(Brr(i, 1)): If T = "" Then GoTo 99
    For i2 = 2 To UBound(Arr)
        If InStr(UCase(Arr(i2, 1)), T) Then
            Arr(i2, 2) = Brr(i, 1)
        End If
    Next
99: Next
[b1].Resize(UBound(Arr), 2) = Arr
End Sub

TOP

回復  samwang

大大,我是初學者,可以註解說明一下你寫的程式碼嗎,感激不盡!!
lumark1976 發表於 2022-11-29 09:44



Sub test()
Dim Arr, Brr, T$, i&, i2&
Arr = Range([c1], [b65536].End(3)) 'B、C欄資料裝入Arr
Brr = Range([g1], [g65536].End(3)) 'G欄資料裝入Brr
For i = 2 To UBound(Brr)
    T = UCase(Brr(i, 1)): If T = "" Then GoTo 99 '無資料換下一個
    For i2 = 2 To UBound(Arr)
        If InStr(UCase(Arr(i2, 1)), T) Then '比對G欄資料有無在B欄
            Arr(i2, 2) = Brr(i, 1)   '有時,G欄資料寫入到Arr
        End If
    Next
99: Next
[b1].Resize(UBound(Arr), 2) = Arr  'Arr貼回excel
End Sub

TOP

        靜思自在 : 多做多得。少做多失。
返回列表 上一主題