excel vba 使用 like 或 regex 查找

excel vba finding with like or regex

我正在编写 VBA 程序。 我在一列

中找到这个字符串 [BLOCKED] 时遇到问题
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

问题是这个字符串有 96 个单元格,但程序找到了 500 个单元格,我该怎么做才能开始工作?
感谢帮助

您的操作的语法不正确。使用:

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

[...] 是一个字符 class。所以,按照你在问题中的写法,它会找到 BLOCKED 集中的任何单个字符。这显然不是你想要的。

要匹配 [ 字符,请将其括在字符 class 中,如我所示。要匹配 ] 字符,它必须在字符 class.

之外

这是我的代码

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\Desktop170703\"
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