2016-09-26 5 views
-2

Ich versuche, VBA zu verwenden, um eine Zeichenfolge mit genau 4 Zeichen ohne Leerzeichen innerhalb einer Spalte zu finden. Es gibt mehr Zeichenfolgen in Zellen. Ich möchte vermeiden, Formeln zu verwenden.Suche Zeichenfolge mit bestimmter Länge VBA

+1

VBA hat eine Funktion namens 'Len', die die Länge eines gegebenen Wert zurück. Sie können dies für eine Zelle oder für Teile von Zellenwerten oder auf verschiedene andere Arten verwenden. Es wäre hilfreich, wenn Sie ein Beispiel für Ihre Eingabe geben und zeigen könnten, wie die Ausgabe formatiert werden soll. Bitte zeigen Sie auch den Code an, den Sie geschrieben haben, um diese Aktion auszuführen? – Dave

+0

Ich möchte dies auf Spalte, die im Grunde eine OCR-Texterkennungsmethode, die von MODI-Office-Modul erstellt wurde. Es gibt ungefähr 90 Reihen in einer Spalte und es gibt einige Zeichenketten innerhalb jeder Zelle. Ich möchte 4 Buchstaben/Ziffern lange innerhalb dieser bestimmten Spalte extrahieren. – eurano

Antwort

2

Spalte „A“ unter der Annahme ist die,

Option Explicit 

Sub main() 
    Dim cell As Range 
    Dim arr As Variant, arrElem As Variant 

    With Worksheets("Strings") '<--| change "Strings" to your actual worksheet name 
     For Each cell In .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)) 
      arr = Split(Replace(cell.Value, " ", " "), " ") '<--| change "A"'s to your actual relevant column index 
      For Each arrElem In arr 
       If Len(arrElem) = 4 Then MsgBox arrElem 
      Next arrElem 
     Next cell 
    End With 
End Sub 
+0

Danke Mann! Das funktioniert perfekt. – eurano

+0

@eurano Bitte markieren Sie die Antwort als richtig, um anderen auf der Suche nach der Antwort auf die gleiche Frage zu helfen. –

+0

eurano, gern geschehen. und .... ja, wie auch @SkipIntro darauf hingewiesen hat, bitte die Antwort als akzeptiert markieren. Danke – user3598756

0

ich Ihre Frage gelesen, wie Sie eine bestimmte Zeichenfolge, vier Zeichen lang sein, müssen Sie in Zellen finden. Dieser wird das tun. Ersetzen Sie einfach "test" mit dem, was Ihr String ist, und die Spalte ändern, falls erforderlich:

Sub findCells() 
Dim rCells() As Variant 
Dim str As String 
Dim col As Integer 

str = "test" ' replace this with the text you want to find 
col = 1 ' to search Column A 

Dim i As Long 

For i = 1 To Cells(Rows.Count, col).End(xlUp).Row 
    If InStr(1, Cells(i, col), str) Then 
     ' Match found, add code here to do 
     ' whatever you need. 
     Debug.Print "Match found in cell: " & Cells(i, col).Address 
    End If 
Next i 

End Sub 
Verwandte Themen