Como extrair número de celular e endereço de email de uma célula específica do Excel, tendo outro texto também disponível na célula [closed]

0

Dados de amostra da célula do Excel:

Subject :Contact from Al Meezan Investment<br/> Email Body: Name: Gulzar ali mirbahar
Email: [email protected]
Contact Number: 03412770800
Subject: Can I eligible of this offer
    
por Waqas 08.05.2018 / 15:58

3 respostas

2

Para dados formatados como este (isto é, E-mail seguido por Número de Contato seguido por Assunto e cada um rotulado como tal), você pode usar as funções FIND e MID para extrair os números de e-mail e contato.

Para extrair o email, você pode usar algo assim:

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

Quebrando:
A função MID leva três argumentos:
1. A célula da qual você está extraindo texto,
2. Com que índice de caractere o texto de destino começa (por exemplo, 40 começaria no 40º caractere em A1) e como 3. Quantos caracteres para extrair.

O primeiro argumento é apenas A1 .
O segundo argumento é FIND("Email:",A1)+LEN("Email: ") . Isso basicamente diz que o endereço de e-mail que você está extraindo começa no índice logo após Email: .
O terceiro argumento é FIND("Contact Number:",A1)-FIND("Email:",A1)-LEN("Email: ") . Essa é uma maneira de calcular o tamanho do endereço de e-mail.

    
por 08.05.2018 / 16:14
2

Embora você não tenha solicitado uma solução VBA e certamente pode fazer isso com fórmulas, para uma solução mais generalizada, uma função definida pelo usuário (UDF) pode ser útil aqui. Você pode extrair o conteúdo de qualquer linha que comece com um rótulo conhecido.

Se você tiver extrações mais complicadas para realizar, um algoritmo diferente pode ser valioso.

Algoritmo

  • Divida o conteúdo da célula no caractere de feed de linha
  • Divida cada linha com base no Label desejado
    • Se o rótulo não estiver presente, o resultado do Split será um array com uma única entrada, caso contrário, ele terá duas entradas
  • Se o Split tiver duas entradas, retorne o segundo.

Para entrar nesta Função Definida pelo Usuário (UDF), alt-F11 abre o Editor do Visual Basic. Certifique-se de que seu projeto esteja destacado na janela Explorador de Projetos. Em seguida, no menu superior, selecione Insert / Module e cole o código abaixo na janela que é aberta.

Para usar esta função definida pelo usuário (UDF), insira uma fórmula como

=cellPart(A1,"email:")

em algumas células.

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
    
por 08.05.2018 / 22:18
1

Baseando-se apenas no único exemplo fornecido, você pode usar as duas fórmulas abaixo

( isso funcionará em dados na célula A1 )

E-mail:

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

Número de contato:

=MID(A1,SEARCH("contact Number:",A1)+16,SEARCH("subject:",A1)-SEARCH("contact Number:",A1)-16)
    
por 08.05.2018 / 16:08