Формула Excel, чтобы найти весь текст в тексте - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь найти текст в тексте и отобразить его в ячейке.

Я могу найти такой текст:

= MID (A2, FIND (":", A2) +1, FIND ("/", A2, FIND (":", A2) +1) - FIND (":", A2) -1)

Однако у меня есть несколько экземпляров, в которых есть несколько строк в этой ячейке со значениями, соответствующими этому условию. например:

это просто пример: 12345678 /, другой пример : 23455663 /.

Мой вопрос будет таким: как я могу захватить все эти значения, начиная с ":" и заканчивая "/", а не только первым экземпляром?

дополнительно, если возможно, как можно разделить каждое значение строкой между строками.

1 Ответ

1 голос
/ 11 марта 2019

Попробуйте следующую определяемую пользователем функцию:

Public Function FindAllText(s As String)
    Dim KaptureMode As Boolean, c As String
    Dim L As Long, i As Long, CH As String
    KaptureMode = False
    c = Chr(10)
    L = Len(s)
    For i = 1 To L
        CH = Mid(s, i, 1)
        If KaptureMode Then
            If CH = "/" Then
                KaptureMode = False
                FindAllText = FindAllText & c
            Else
                FindAllText = FindAllText & CH
            End If
        Else
            If CH = ":" Then
                KaptureMode = True
            End If
        End If
    Next i
    If Right(FindAllText, 1) = c Then FindAllText = Mid(FindAllText, 1, Len(FindAllText) - 1)
End Function

enter image description here

Обязательно отформатируйте ячейку с UDF с включенной Wrap.

РЕДАКТИРОВАТЬ # 1:

Эта версия будет проверять наличие несоответствия / вблизи конца строки:

Public Function FindAllText(s As String)
    Dim KaptureMode As Boolean, c As String
    Dim L As Long, i As Long, CH As String
    Dim Candidate As String

    Candidate = ""
    KaptureMode = False
    c = Chr(10)
    L = Len(s)
    For i = 1 To L
        CH = Mid(s, i, 1)
        If KaptureMode Then
            If CH = "/" Then
                KaptureMode = False
                FindAllText = FindAllText & Candidate & c
                Candidate = ""
            Else
                Candidate = Candidate & CH
            End If
        Else
            If CH = ":" Then
                KaptureMode = True
            End If
        End If
    Next i
    If Right(FindAllText, 1) = c Then FindAllText = Mid(FindAllText, 1, Len(FindAllText) - 1)
End Function

enter image description here

Как видите, abc не отображается на выходе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...