Иногда мне приходится извлекать почту из текста, при чем различного, в котором заранее не известно в какой части находится email.
Данную задачу я упростил созданием функции =ПОЧТАИЗСТРОКИ(ТЕКСТ; [СТАРТ]), она имеет 2 аргумента:
Разберем работу функции на примерах
Извлекаем почту из разных частей текста
Public Function ПОЧТАИЗСТРОКИ(ByVal ТЕКСТ As String, Optional ByVal СТАРТ As Long = 1) As String Dim ТЕКСТ1 As String, ТЕКСТ2 As String Dim Space1 As Long, Space2 As Long Dim DogPos As Long DogPos = InStr(СТАРТ, ТЕКСТ, "@") If DogPos = 0 Then ПОЧТАИЗСТРОКИ = "Почта не найдена": Exit Function ТЕКСТ1 = Left(ТЕКСТ, DogPos - 1) ТЕКСТ2 = Right(ТЕКСТ, Len(ТЕКСТ) - DogPos) ТЕКСТ1 = ИНВЕРСИЯ(ТЕКСТ1) Space1 = InStr(СТАРТ, ТЕКСТ1, " ") If Space1 > 0 Then ТЕКСТ1 = Left(ТЕКСТ1, Space1 - 1) ТЕКСТ1 = ИНВЕРСИЯ(ТЕКСТ1) Space2 = InStr(1, ТЕКСТ2, " ") If Space2 > 0 Then ТЕКСТ2 = Left(ТЕКСТ2, Space2 - 1) ПОЧТАИЗСТРОКИ = ТЕКСТ1 & "@" & ТЕКСТ2 End Function