Excel 2016 разбивает строку на несколько пробелов - PullRequest
0 голосов
/ 14 октября 2018

У меня есть следующие строки в двух ячейках в Excel 2016

Joe Blogger joe.bloggs@testing.com 0198156374
Martin Son ms@hotmail.com 9847493933

Я хочу извлечь только адрес электронной почты из каждой ячейки, я изо всех сил пытаюсь найти решение.

До сих пор мне удавалось использовать = RIGHT, чтобы удалить только имя из любой ячейки

. Затем я скопировал и вставил значения ячейки и подумал, что я повторил формулу, но она просто не работает.Я продолжаю получать сообщение об ошибке # ЗНАЧЕНИЕ.

Что я пропускаю / делаю неправильно?

Я не могу использовать встроенную функцию для разделения на фиксированной длине, потому что разделение происходит в разных позициях в каждой ячейке, я167 клеток.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Этот метод возвращает адрес электронной почты, проверяя его, предполагая, что он всегда будет содержать @ и будет отделен пробелами от остальной части строки:

=TRIM(RIGHT(SUBSTITUTE(LEFT(TRIM($A1),FIND(" ",TRIM($A1),FIND("@",TRIM($A1)))-1)," ",REPT(" ",99)),99))
  • Он ищетпервый пробел после @
  • вернуть все до этого последнего пробела
  • затем вернуть все после последнего оставшегося пробела, который будет пробелом перед @ или адресом электронной почты

Если в строке должны быть другие подстроки, содержащие @, или если электронное письмо не ограничено пробелами, вам потребуется другой алгоритм

Выше не учитываетсясколько имен предшествует адресу электронной почты, при условии, что есть хотя бы один.

0 голосов
/ 14 октября 2018

try,

=trim(mid(substitute(a2, " ", rept(" ", len(a2))), len(a2)*2, len(a2)))

Внимательное рассмотрение математических выражений в формуле должно выявить, что настройка начальной точки и длины функции MID должна быть в состоянии выделить любой из разделов информации.

enter image description here

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