1

У меня есть таблица Excel с 50k+ строками данных, где мы пытаемся определить в строках данных, где адрес электронной почты не совпадает с именем и т.д.

Мы в основном пытаемся сузить число строк до минимума, когда адреса электронной почты имеют разные вариации их имени, чтобы мы могли заменить поле приветствия этой информацией.

Итак, если в столбце O есть имя Джонатан Смит (в поле имени есть различия, у некоторых имен есть средние инициалы и т.д.), А их адрес электронной почты в столбце R - johnsmith@gmail.com, мы хотим обновить поле "Приветствие". в колонке X с "Джоном".

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

Я сократил его с 50К до 15К, выполнив следующее:

Сначала я использовал формулу =1-ISNUMBER(MATCH("*"&LEFT(O2,3)&"*",R2,0)) которая помогла мне исключить электронные письма, которые соответствуют части имени контакта. (очевидно, делая это таким образом, я не поймаю "Роба" против "Роберта", но я не могу придумать другого пути).

Затем я отсортировал данные, чтобы получить те, которые соответствовали, из уравнения. На тех, которые не совпадали, я сделал другую формулу для извлечения первой начальной фамилии, используя =PROPER(LEFT(O2)&TRIM(RIGHT(SUBSTITUTE(O2," ",REPT(" ",99)),99))) Это не дало мне ни одного, у которого был средний инициал (это следует исключить, так как я вижу немало таких, как "jrsmith", но я получаю только "jsmith").

Затем я сделал =1-ISNUMBER(MATCH("*"&LEFT(W2,3)&"*",R2,0)) чтобы проверить, соответствуют ли какие-либо электронные письма тем, чтобы я мог исключить их.

Опять же, я получил его с 50К до 15К, но должен быть более простой способ. Есть ли более простой способ? Как вложенная функция или скрипт, который будет смотреть на эту таблицу и определять строки, в которых адрес электронной почты не содержит изменений:

  • фамилия Имя@
  • firstinitiallastname @
  • firstinitialmiddleinitiallastname @
  • Имя (полное совпадение)@
  • имя Фамилия@

1 ответ1

0

Это должно работать, вставьте дополнительный столбец и настройте диапазон и смещения для поиска в соответствующем месте. Затем просто отсортируйте по непробелам в новом столбце, чтобы увидеть все, что не соответствует.

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

Примечание: это не учитывает условие Джон против Джонатана

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