Извлечение имейл адреси от една клетка, която съдържа друг текст

Решение: Проблемът може да бъде решен с помощта на макро или потребителска функция megaformuly.

Макросът се основава на VBA Сплит функция. Да приемем, че клетката съдържа текст Напиши [email protected] да резервирате семинар. Ако премине на текста за функцията на Сплит и уточни, че текстът трябва да бъде разделен на елементи, разделени с интервал - х = Split (cell.Value, "") - VBA връща масив, където всяка дума е елемент на масива. Фиг. 1 показва множество х Сплит след употреба функция.

Извлечение имейл адреси от една клетка, която съдържа друг текст

Фиг. 1. Сплит функция връща масив, където всяка дума е елемент на масива

Изтеглете бележка в Word или PDF формат. примери в Excel (с VBA код)

Под getEmailMacro ()
Дим х Като вариант
Дим аз Като цяло число
Дим бележка Както стринга

За Всяка клетка В Selection
х = Split (cell.Value, "")
За I = 0 до UBound (х)
Ако х (и) като "*@*.*" Тогава
cell.Offset (0, 1) = х (I)
Изход За
Крайна сметка, ако
Следваща аз
Следваща клетка
End Sub

Код потребителски дефинирана функция:

Публична Функция getEmail (забележка Както стринга) Както стринга
Дим х Като вариант
Дим аз Като цяло число
х = Split (бележка, "")
За I = 0 до UBound (х)
Ако х (и) като "*@*.*" Тогава
getEmail = х (I)
Exit Function
Крайна сметка, ако
Следваща аз
Крайна Длъжност

Въпреки факта, че по следната формула ще отнеме известно време да пиша, че е изключително умен и изненадващо лесна за използване: = TRIM (MID (SUBSTITUTE ( "" А1; "" Повторение ( "", 20)); ТЪРСЕНЕ ( "@"; SUBSTITUTE ( "" А1; "" Повторение ( "", 20))) - 20; 40)). първи

Формулата първоначално е бил използван SUBSTITUTE функция на оригиналния текст, заменете всяко пространство в двадесет последователни пространства. Това ви позволява да се отделят всяка дума в текста на голям брой пропуски.

Оригинален текст: сега е моментът за [email protected] да си купи книга

Нов текст: сега е моментът за [email protected] да си купи книга

И накрая, функцията TRIM заменя четирите пространства в ред един, и премахва началните и крайните пространства, така че в крайна сметка ще получите това, което исках: [email protected] (фигура 4).