Вот опять - "вырезать и вставить". Это в принципе не может сделать ни одна формула, только макросом. Ну как вариант - две формулы в два доп.столбца... А тем по копированию e-mail было навалом, и UDF есть как минимум парочка.
Хм. У меня почему-то пишет просто формулу, как в примере - не рассчитывает результат (на принтскрине ниже видно). Хотя в ваших файлах все считает.
А откуда взять "Extract hiperlinks"?
И еще - как сделать, чтобы в ячейке, откуда мы берем почту - ее не копировать, а вырезать, чтобы ее там не оставалось? Или создавать рядом новую ячейку, в которой не будет электронной почты
Так это тот редкий случай, когда и впрямь нужно вырезать Я уже выше написал как. Дополню - если делать всё формулами, то заменяйте в исходной строке вытянутый емайл на пусто, ну и ещё поверх всему TRIM() не помешает.
Вам выдали немало вариантов, но вы САМИ пока ничего не предприняли, так может стоит вам просто заказать решение в "РАБОТЕ"? ps И разберитесь со своими "непонятнокакими многострочными" данными - их стоит, имхо, тщательно причесать перед употреблением...
создавать рядом новую ячейку, в которой не будет электронной почты
UDF
Код
Function BezEmail(iCell As String)
With CreateObject("vbscript.regexp")
.Pattern = "[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}"
.Global = True
.IgnoreCase = True
If .test(iCell) Then
BezEmail = .Replace(iCell, "")
Else
BezEmail = iCell
End If
End With
End Function
Function GetMail(From As String)
Dim arr
arr = Split(Application.WorksheetFunction.Trim(Replace(From, Chr(160), Chr(32))))
For Each a In arr
If InStr(a, "@") <> 0 Then
GetMail = a
Exit Function
End If
Next a
End Function
Function Email(iCell As String)
With CreateObject("vbscript.regexp")
.Pattern = "[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}"
.Global = True
.IgnoreCase = True
If .test(iCell) Then
Email = .Execute(iCell)(0).Value
Else
Email = "Нет в строке электронного адреса"
End If
End With
End Function