Hallo Andreas,
du könntest z.B. LIKE nutzen.
Beispiel:
If Cells(i, 5).Value Like "*[#]##[#]*" Then
Damit findest du z.B. alle Zellinhalte bei denen zwei Zahlen zwischen dem # stehen.
Leider gibt es hierbei keine Möglichkeit die Position zu bestimmen, an der der Suchbegriff gefunden wurde.
Daher musst du auch hier InStr nutzen.
Ich habe mal zwei Beispielcodes erstellt, einmal nur mit InStr und einmal kombiniert. Ich gehe davon aus, dass in der 1. Zeile Überschriften stehen. Hier der Code nur mit InStr:
Sub suchen()
Dim lngLetzte As Long
Dim arrDaten As Variant
Dim i As Long
Dim lngStart As Long
lngLetzte = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
ReDim arrDaten(lngLetzte - 1)
arrDaten = Range(Cells(2, 5), Cells(lngLetzte, 5))
For i = LBound(arrDaten, 1) To UBound(arrDaten, 1)
lngStart = InStr(1, arrDaten(i, 1), "#")
If lngStart > 0 Then
If Mid(arrDaten(i, 1), lngStart + 3, 1) = "#" Then Cells(i + 1, 16) = Mid(arrDaten(i, 1), lngStart, 4)
End If
Next i
End Sub
Und hier die Kombination mit LIKE:
Sub suchen2()
Dim lngLetzte As Long
Dim arrDaten As Variant
Dim i As Long
Dim lngStart As Long
lngLetzte = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
ReDim arrDaten(lngLetzte - 1)
arrDaten = Range(Cells(2, 5), Cells(lngLetzte, 5))
For i = LBound(arrDaten, 1) To UBound(arrDaten, 1)
If arrDaten(i, 1) Like "*[#]##[#]*" Then
lngStart = InStr(1, arrDaten(i, 1), "#")
If Mid(arrDaten(i, 1), lngStart + 3, 1) = "#" Then Cells(i + 1, 16) = Mid(arrDaten(i, 1), lngStart, 4)
End If
Next i
End Sub
Gruß
M.O.