Пример данных ячейки Excel:

Subject :Contact from Al Meezan Investment<br/> Email Body: Name: Gulzar ali mirbahar
Email: mirbaharg@gmail.com
Contact Number: 03412770800
Subject: Can I eligible of this offer

3 ответа3

2

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

Чтобы извлечь письмо, вы можете использовать что-то вроде этого:

=MID(A1,FIND("Email:",A1)+LEN("Email: "),FIND("Contact Number:",A1)-FIND("Email:",A1)-LEN("Email: "))

Разбивая это:
Функция MID принимает три аргумента:
1. Ячейка, из которой вы извлекаете текст,
2. С какого индекса начинается целевой текст (например, 40 будет начинаться с 40-го символа в A1), и
3. Сколько символов извлечь.

Первый аргумент - просто A1 .
Второй аргумент - FIND("Email:",A1)+LEN("Email: ") . Это в основном говорит, что адрес электронной почты, который вы извлекаете, начинается с индекса сразу после Email:
Третий аргумент - FIND("Contact Number:",A1)-FIND("Email:",A1)-LEN("Email: ") . Это способ расчета длины адреса электронной почты.

2

Хотя вы не просили решение VBA и, конечно, можете сделать это с помощью формул, для более обобщенного решения здесь может пригодиться пользовательская функция (UDF). Вы можете извлечь содержимое любой строки, которая начинается с известной метки.

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

Алгоритм

  • Разделить содержимое ячейки на символ перевода строки
  • Разделить каждую строку на основе нужной Label
    • Если метка отсутствует, результатом Split будет массив с одной записью, в противном случае он будет иметь две записи
  • Если в Split есть две записи, верните вторую.

Для ввода этой пользовательской функции (UDF)alt-F11 открывает редактор Visual Basic. Убедитесь, что ваш проект выделен в окне Project Explorer. Затем в верхнем меню выберите « Вставить / Модуль» и вставьте приведенный ниже код в открывшееся окно.

Чтобы использовать эту пользовательскую функцию (UDF), введите формулу

=cellPart(A1,"email:")

в какой-то камере.

Option Explicit
Option Compare Text
'Extract any line starting with sLabel

Function cellPart(myCell As Range, sLabel As String) As String
  Dim V, W, X
  V = Split(myCell.Text, vbLf)

For Each W In V
    X = Split(W, sLabel)
    If UBound(X) = 1 Then
        cellPart = CStr(Trim(X(1)))
        Exit Function
    End If
Next W
End Function
1

Основываясь исключительно на приведенном вами единственном примере, вы можете использовать следующие 2 формулы

(это будет работать с данными в ячейке A1)

Эл. адрес:

=MID(A1,SEARCH("Email:",A1)+6,SEARCH("contact Number:",A1)-SEARCH("Email:",A1)-6)

Контактный номер:

=MID(A1,SEARCH("contact Number:",A1)+16,SEARCH("subject:",A1)-SEARCH("contact Number:",A1)-16)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .