Precisa de um script do Excel para identificar endereços de e-mail que contenham uma variação diferente do primeiro nome do contato

1

Eu tenho uma planilha do Excel com 50k + linhas de dados, onde estamos tentando identificar nas linhas de dados onde o endereço de e-mail não tem correspondência com o primeiro nome, etc.

Estamos basicamente tentando diminuir as linhas para o menor número possível de endereços de e-mail com uma variação diferente de seu primeiro nome, para que possamos substituir o campo de saudação por essa informação.

Portanto, se o nome for Jonathan Smith na coluna O (há variações no campo de nome, alguns nomes têm iniciais do meio, etc.) e o endereço de email deles na coluna R is [email protected], queremos atualizar o campo Saudação na coluna X com "João".

Sei que parte disso terá que ser feito manualmente, mas estamos tentando restringir abaixo dessas linhas de 50k para obter as mais óbvias que não se qualificam (aquelas que têm mesmo primeiro nome ou primeiro sobrenome inicial ou sobrenome primeiro inicial no endereço de e-mail) fora do caminho.

Eu reduzi de 50k para 15k fazendo o seguinte:

Primeiro, usei a fórmula =1-ISNUMBER(MATCH("*"&LEFT(O2,3)&"*",R2,0)) , que me ajudou a excluir os e-mails que correspondiam a parte do primeiro nome dos contatos. (obviamente fazendo assim não vou pegar "Rob" contra "Robert" mas não consigo descobrir de outra maneira).

Depois, classifiquei os dados para obter os que combinavam, fora da equação. Nos que não combinaram, fiz outra fórmula para extrair o primeiro nome inicial usando =PROPER(LEFT(O2)&TRIM(RIGHT(SUBSTITUTE(O2," ",REPT(" ",99)),99))) . Isso não me deu nenhum que tivesse uma inicial do meio, (esses devem ser descartados, assim como eu vejo alguns como "jrsmith", mas eu só recebo "jsmith").

Então, de lá, eu fiz =1-ISNUMBER(MATCH("*"&LEFT(W2,3)&"*",R2,0)) para ver se algum e-mail correspondia àqueles para que eu pudesse descartá-los.

Mais uma vez, consegui de 50k para 15k, mas tem que ser mais fácil. Existe um caminho mais fácil? Como uma função ou script aninhado que analisaria essa planilha e identificaria linhas nas quais o endereço de e-mail não contém variações de:

  • lastnamefirstname @
  • firstinitiallastname @
  • firstinitialmiddleinitiallastname @
  • Nome (correspondência completa) @
  • firstnamelastname @
por LMP 29.12.2013 / 16:55

1 resposta

0

Isso deve funcionar, inserir uma coluna extra e ajustar o intervalo e os deslocamentos para pesquisar no local apropriado. Em seguida, apenas classifique por não-brancos na nova coluna para ver todos os que não correspondem.

Sub firstname()
Application.ScreenUpdating = False
Dim strEmail As String
Dim strName As String
Dim i As Integer
Dim j As Integer

For Each c In Range("A:A")
    If c.Value <> "" Then
        On Error Resume Next
        i = Application.WorksheetFunction.Search(" ", c.Value)
        strName = Left(c, i - 1)
        strName = UCase(strName)
        j = Application.WorksheetFunction.Search("@", c.Offset(0, 2).Value)
        strEmail = Left(c.Offset(0, 2), j - 1)
        strEmail = UCase(strEmail)

            If InStr(strEmail, strName) = 0 Then
            c.Offset(0, 1) = strEmail
            End If

    End If
 Next c

Application.ScreenUpdating = True
End Sub

Observação: isso não leva em conta a condição de John vs Johnathan

    
por 29.12.2013 / 19:02