VBA - 在文本单元格的预定义(但不断变化的)单词的下一列中返回所有结果

VBA - give back all results in next column of predefined (but changing) words from text-cell

我正在努力寻找解决方案,希望有人能提供帮助。

我有:

• 一个包含多个条目的文本列的图表,只是共享下一个条目用“;”分隔所有条目的格式为“xy 00/00”(例如“AB 03/18”等)(见下图 link)

我需要的:

• 我需要 excel 才能在下一列中找到我预定义的每行特定条目(在列上方,请参见下面的示例),但只有前两个和最后两个字符已定义,中间的字符可以是任何字符(例如“AB ??/18”)。

所以例如这样:

Screenshot Chart

我试过使用常规公式,但它只给出了第一个 AB……,当然不是其余部分。 如果只能返回上面单元格中搜索到的文本的数量,那也可以。

抱歉,如果这太难了,请告诉我,这样我就可以搁置这个项目并接受我必须在余下的日子里手动完成它的事实,哈哈。

您的屏幕截图似乎与您的 objective 不完全一致,即 模式 AB ##/18 可以在字符串中找到 3 次 blabla WF 12/23; AB 08/18AB 09/18AB 08/18 但是您的计数列仅记录了 1 个结果(对于 AB 08/18)- 第一行中也有一个匹配项(对于 AB 12/18),但是您的计数为 0...

下面的代码假定您的屏幕截图中的 4 个数据单元格在 A3:A6 范围内,并且 它们 不是 table

Sub txtMatching()
    Dim results As String, cell As Range, incidence As Integer, pattern As String, pos As Integer, temp As String
    pattern = "AB ##/18"
    For Each cell In Range("A3:A6")
        pos = 1
        If cell.Value Like "*" & pattern & "*" Then
            Do
                pos = InStr(pos, cell.Value2, Mid(pattern, 1, InStr(1, pattern, "#") - 1))
                If pos = 0 Then Exit Do
                temp = Mid(cell.Value2, pos, Len(pattern))
                If temp Like pattern Then
                    results = results & temp & "; "
                    incidence = incidence + 1
                End If
                pos = pos + Len(pattern)
            Loop While pos < Len(cell.Value2)
            cell.Offset(0, 1).Resize(1, 2).Value2 = Array(Mid(results, 1, Len(results) - 2), incidence)
            results = vbNullString
            incidence = 0
        Else
            cell.Offset(0, 2).Value2 = 0
        End If
    Next cell
End Sub