Como encontrar frases específicas em locais não especificados e adicionar a nova coluna no MS Excel

0

Desculpe se as perguntas não são muito explicativas. Basicamente eu tenho uma grande folha de dados sobre clientes em potencial. Os dados incluem seus endereços de e-mail, embora sejam esparsos e não em locais definidos (veja abaixo). Gostaria de criar uma função que procuraria por frases que contenham a palavra "email" e adicioná-las a uma nova coluna.

Durante o processo, se a função puder tirar a frase da palavra "email:", isso seria fantástico.

Por favor, ajude!

Exemplo dos meus dados:

    
por Amir J 16.05.2012 / 11:48

2 respostas

0

Eu acho que simplesmente você pode usar Ctrl + F para pesquisar palavras-chave para a palavra específica como "email".

    
por 16.05.2012 / 11:52
0

O VBA é o caminho a percorrer neste cenário. Eu juntei alguns códigos que você pode usar para pesquisar em uma planilha por endereços de email (precedidos por "email:"). Ele retornará os endereços de e-mail em uma coluna em uma nova planilha chamada "Lista de e-mail". Basta colar o seguinte em um módulo e executar o Sub GatherEmails.

Option Explicit
Sub GatherEmails()
Dim s1 As Worksheet, r1 As Range, s2 As Worksheet, r2 As Range
Dim tmp() As Variant, rws As Long, cols As Long, tmpStr As String
Dim tmpOut As String, output() As String
Set s1 = ActiveSheet
Set r1 = s1.UsedRange
'Load all data from sheet into array for fast processing.
tmp = r1.Value
'Loops through all values, extracts email addresses, and stores them in one space-delimited string.
For rws = 1 To UBound(tmp, 1)
    For cols = 1 To UBound(tmp, 2)
        If tmp(rws, cols) <> "" Then
            tmpStr = MatchEmails(CStr(tmp(rws, cols)))
            If tmpStr <> "" Then
                tmpOut = tmpOut & tmpStr & " "
            End If
        End If
    Next cols
Next rws
Erase tmp
'Remove trailing space from string
tmpOut = Left(tmpOut, Len(tmpOut) - 1)
'Store email addresses in an array.
output = Split(tmpOut, " ")
'Create new sheet and print array of email addresses there.
Set s2 = Sheets.Add
s2.Name = "Email List"
Set r2 = s2.Range("A1").Resize(UBound(output) + 1, 1)
r2.Value = Application.WorksheetFunction.Transpose(output)
Erase output
End Sub

Private Function MatchEmails(searchstring As String) As String
'Uses regex pattern to find email addresses preceded by "email:" and strips away "email:".
'Returns all matches in one space-delimited string.
Dim objRegex As Object, matches As Variant, i As Long
Set objRegex = CreateObject("vbscript.regexp")
With objRegex
    .Global = True
    .Pattern = "email:([^ ]*)"
    Set matches = .Execute(searchstring)
If matches.Count > 0 Then
    For i = 1 To matches.Count
        MatchEmails = MatchEmails & .Replace(matches(i - 1).Value, "$1") & " "
    Next i
    MatchEmails = Left(MatchEmails, Len(MatchEmails) - 1)
Else
    MatchEmails = ""
End If
End With
End Function

Nota: você terá que adicionar uma referência para usar a sintaxe da expressão regular na função. No editor do VBA, vá para "Ferramentas" > > 'References ...', marque a caixa ao lado de 'Microsoft VBScript Regular Expressions 5.5'.

    
por 24.07.2012 / 20:14