Как получить адрес электронной почты между двумя разными символами в Excel или Google Sheets только по формуле? - PullRequest
2 голосов
/ 29 октября 2019

Ячейка A2 имеет следующий пример электронного адреса:

Jose Rizal <jose@email.com>

Я хочу получить адрес электронной почты только в ячейке B2:

=right(A2,len(A2) - search("<",A2,1))

, но результат был: jose@email.com> (с> на последнем символе).

Таблица выглядит следующим образом, и ожидаемый результат на B2:

  |            A                |          B         |
 1| complete email address      | email address only |
 2| Jose Rizal <jose@email.com> | jose@email.com     |

Что делатьулучшить мою формулу?

Ответы [ 4 ]

1 голос
/ 29 октября 2019

вставить в B2:

=REGEXEXTRACT(A2, "<(.*)>")

0

, а формула массива будет:

=ARRAYFORMULA(IFERROR(REGEXEXTRACT(A2:A, "<(.*)>")))
0 голосов
/ 30 октября 2019

Другая попытка использования FILTERXML , если вы используете одну из следующих версий Excel:

FILTERXML

=FILTERXML("<b><a>"&SUBSTITUTE(LEFT(A2,LEN(A2)-1),"<","</a><a>")&"</a></b>","//a[2]")

Предположимзвездочки данных из ячейки A2, перетащите формулу вниз, чтобы применить ее к.

Для логики этой формулы вы можете прочитать эту статью: Извлечение слов с помощью FILTERXML .

0 голосов
/ 29 октября 2019

Добавьте еще одну левую обрезку:

=LEFT(RIGHT(A2,LEN(A2) - SEARCH("<",A2,1)),LEN(RIGHT(A2,LEN(A2) - SEARCH("<",A2,1)))-1)
0 голосов
/ 29 октября 2019

В листах Excel или Google (но REGEXEXTRACT игрока0 лучше использовать в Google Sheets):

=MID(REPLACE(A2,FIND(">",A2),LEN(A2),""),FIND("<",A2)+1,LEN(A2))

и перетащите формулу вниз.

enter image description here

...