Excel VBAで文字列の部分一致の文字列を表示
以前、こちらで頭5文字までの一致で文字列を表示するVBAを教えて頂きました。今回はFINDなどの部分一致での文字列を表示することをしたいのですが、ご教示いただけますと幸いです。
下記はSheet1のA3に文字を5文字以内いれるとSheet2のC列からピックアップしてSheet1のA列に文字列を表示する及びSheet2のB列のデータをSheet1のC列に表示させるVBAです。
Sub Test2()
Dim Ws1 As Worksheet, Ws2 As Worksheet
Dim SData As String, i As Long, VRet As Variant
Dim c As Range, LastRow As Long
Set Ws1 = Sheets("Sheet1")
Set Ws2 = Sheets("Sheet2")
SData = CStr(Ws1.Range("A3").Value)
If SData = "" Then Exit Sub
i = 5
LastRow = Ws1.Cells(Rows.Count, "A").End(xlUp).Row
If LastRow < i Then
LastRow = i
End If
Ws1.Range(Ws1.Cells(i, "A"), Ws1.Cells(LastRow, "C")).ClearContents
With Ws2
For Each c In .Range(.Cells(1, "C"), .Cells(Rows.Count, "C").End(xlUp))
VRet = InStr(1, CStr(c.Value), SData, vbTextCompare)
If VRet = 1 And Len(c.Value) >= 10 Then
Ws1.Cells(i, "A").Resize(1, 2).Value = c.Resize(1, 2).Value
'とりあえずSheet2のB列のデータ(C列のデータに同期したデータ)をSheet1のC列に
Ws1.Cells(i, "C").Value = .Cells(c.Row, "B").Value
i = i + 1
End If
Next
End With
End Sub
宜しくお願い致します。
お礼
ご回答ありがとうございました。 なるほど、すごいですね。 自作の関数を作れるようになれるよう頑張りたいと思います。