2017-07-05 3 views
0

Ich schreibe ein VBA-Programm. Ich habe ein Problem mit der Suche nach dieser Zeichenfolge [BLOCKED] in einer SpalteExcel VBA Finden mit Gleichen oder Regex

For j = 0 To 4 
    For i = 2 To lastrow 
     If Cells(i, 12).Value = groupnames(j) And Cells(i, 8).Value Like "*" & "[BLOCKED]" & "*" Then 
      groupsum(j) = groupsum(j) + 1 
     End If 
    Next i 
Next j 

Das Problem ist habe ich 96 Zellen für diesen String aber das Programm 500 gefunden, wie kann ich diese Arbeit zu gehen zu tun?
Vielen Dank für Ihre Hilfe

+0

nicht sicher, ob ich verstehen, werden Sie eine Fehlermeldung bekommen? nicht das erwartete Ergebnis erhalten? es wird ein wenig schwer zu helfen, ohne ein Beispiel Ihrer Daten zu sehen, und wo setzen Sie und initiieren das Array 'Gruppennamen' –

+0

@ShareRado Ich denke, er erwartet 96 Returns Maximum, aber 500 gefunden. –

+0

Ich habe eine Spalte mit Daten . Diese Daten lese ich in ein Array. Ich möchte jede Zelle diese Zeichenfolge finden [BLOCKIERT]. zum Beispiel eine Zelle haben "[BLOCKED] - xyz." –

Antwort

0

Die Syntax Ihrer Wie Operation ist falsch. Verwendung:

... Like "*[[]BLOCKED]*" 

[...] eine Zeichenklasse ist. So, wie Sie es in Ihrer Frage geschrieben haben, wird es jedes einzelne Zeichen in der Menge von BLOCKED finden. Das ist anscheinend nicht das, was du willst.

Um das Zeichen [] anzupassen, schließen Sie es innerhalb einer Zeichenklasse ein, wie ich gezeigt habe. Um das Zeichen ] zu entsprechen, muss es außerhalb einer Zeichenklasse sein.

+0

es funktioniert nicht für mich –

+0

Was bedeutet * nicht funktioniert *? Wenn das bedeutet, dass Sie das gleiche Ergebnis wie zuvor (500 Treffer) erhalten, haben Sie ein anderes Problem als das, was Sie angegeben haben. Wenn du etwas anderes meinst, verstehe, dass ich deine Gedanken nicht lesen kann. Bitte lesen Sie [So erstellen Sie ein minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve), da ich keinen Fehler basierend auf Ihren Angaben reproduzieren kann. –

+0

sorry .., ich meine ich habe 0 Übereinstimmung. wenn ich nur blocked finde ich habe 100matchs so der Code andere Teile ist in Ordnung –

0

hier ist mein Code

Sub blocked() 

Dim SfileUsers As String 
Dim path As String 
Dim pathread As String 
Dim sFileread As String 
Dim lastrow As Long 
Dim keres() As Variant 
Dim groupadd() As String 
Dim groupnames(4) As String 
Dim groupsum(4) As Long 




path = "C:\Users\uids9282\Desktop\" 
SfileUsers = "Users.xlsx" 
Workbooks.Open path & SfileUsers 
Dim hossz As Long 
hossz = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row 
ReDim keres(hossz) 
ReDim groupadd(hossz) 
For i = 2 To hossz 
keres(i) = Sheets(1).Cells(i, 2).Value 
groupadd(i) = Sheets(1).Cells(i, 4).Value 
Next i 


'fájlmegnyitás 
pathread = "C:\Users\uids9282\Desktop\20170703\" 
sFileread = "open.xml" 
     If Dir(pathread & sFileread) = sFileread Then 
      Workbooks.Open pathread & sFileread 
      lastrow = Workbooks(sFileread).Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row 

      Else 
      MsgBox ("Nincs ilyen nevű excel táblázat. Kérem próbálkozzon újra") 
     End If 

'groupok hozzáadása a fájlhoz 
Dim user As String 
For j = 2 To hossz 
    For i = 2 To lastrow 
    user = Trim(Cells(i, 5).Value) 
     If user = keres(j) Then 
      Cells(i, 12).Value = groupadd(j) 
     End If 
    Next i 
Next j 

'group szummázása és átírása 
ThisWorkbook.Activate 
For i = 2 To 6 
groupnames(i - 2) = Cells(i, 1).Value 
Next i 
Workbooks(sFileread).Activate 
For j = 0 To 4 
    For i = 2 To lastrow 
     If Cells(i, 12).Value = groupnames(j) And Cells(i, 8).Value Like "*[[]BLOCKED[]]*" Then 'itt van benne a hiba!!   groupsum(j) = groupsum(j) + 1 
     End If 
    Next i 
Next j 
ThisWorkbook.Activate 
For j = 2 To 6 
    Cells(j, 4).Value = groupsum(j - 2) 
Next j 

Workbooks(SfileUsers).Close SaveChanges:=False 
Workbooks(sFileread).Close SaveChanges:=True 


End Sub 

this is my excel file where i want to searching

+0

Dies gehört als Update zu Ihrer Frage (bearbeiten Sie Ihre Frage, um dies zu berücksichtigen), da es keine Antwort auf Ihre Frage ist. Außerdem habe ich kein Tool, um den Screenshot Ihrer Excel-Seite in ein verwendbares Excel-Arbeitsblatt zu konvertieren. Welches Werkzeug verwenden Sie, um diese Konvertierung durchzuführen? –