Как из одного списка подписчиков вычесть другой (№ 115)

В прошлый раз мы разбирались с DOI и SOI. В этот займёмся обработкой данных о подписчиках в Экселе — проведём сравнение списков email для их последующего вычитания один из другого.

Кстати, в блоге уже есть пара статей на тему работы с Экселем:
Как делать выборку «каждый N-й» /
Узнаём пол подписчика по имени

За время, прошедшее с их публикации, они нисколько не утратили своей универсальности и актуальности. Так что продолжим развивать тему Экселя (или его прямого аналога — онлайн-таблиц Google Sheets), и ещё расширим свой арсенал работы с данными. Тем более, умение обращаться с массивами в тысячи строк как раз входит в прямые обязанности email-маркетолога.

 

Когда нужно вычитать списки

Как правило, задача сравнить списки, а затем исключить совпадающие значения — то есть вычесть один столбец с email-ами из другого — возникает на ранних этапах наладки email-маркетинга. В этот момент нужно обработать уже накопленный за время существования проекта объём данных перед тем, как импортировать его в сервис рассылок.

Также необходимость работы со списками появляется при смене сервиса, когда данные сначала экспортируются из одного места в виде таблиц, а затем загружаются в другое. Иногда перед загрузкой с ними нужно произвести некоторые предварительные манипуляции. В том числе, сравнение списков — скажем, для исключения отписавшихся, невалидных email, сопоставления с имеющимися данными в CRM и т.п.

Наконец, сервис рассылок мы можем не менять, но нам понадобится навести в нём порядок. Например, проект «зарос» множеством хаотичных списков, email-адреса в которых дублируются и пересекаются не по одному разу:

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

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

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

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

Вычитание списков

Скажу сразу, что не являюсь каким-то крутым специалистом в Экселе и не уверен, что данный способ вычитания самый оптимальный. Тем не менее, он весьма несложный и быстрый — так что, опробовав его раз в деле, я вооружился им без каких-либо последующих усовершенствований и доработок.

Предположим, у нас есть 2 списка с email-ами в Экселе: A и B. Для наглядности сделаем их не очень большими — 10 и 7 строк соответственно — хотя в реальности, конечно речь будет идти скорее всего про тысячи строк (иначе мы без проблем могли бы сравнить данные чисто визуально).

Также, кроме email, в списках могут быть и другие параметры — имена, гео, прочее — но их для простоты мы тоже отложим в сторону. Сосредоточимся только на email, как на уникальных идентификаторах подписчиков. Прочие данные всегда можно будет «пристегнуть» к ним задним числом, уже после сравнения.

Нам известно, что среди A и B могут быть пересечения. Поэтому мы хотим сравнить их, чтобы в результате устранить дубли: оставить в списке A только тех подписчиков, которых нет в B, и наоборот.

Воспользуемся для этих целей экселевской формулой СЧЁТЕСЛИ.

Работает она следующим образом: берёт значение из одного столбца, последовательно сравнивает его с диапазоном значений в другом столбце, и, если находит совпадение, то возвращает 1 (в противном случае, 0):

Сравнение email в Экселе: формула СЧЁТЕСЛИ

Делаем сравнение списков email:

→ Берём список A и размещаем его на листе Экселя в первом столбце.

→ Берём список B и копируем его в соседний столбец на том же листе, чтобы значения A и B наглядно и компактно оказались друг рядом с другом:

Сравнение email в Экселе: ставим списки друг рядом с другом

→ В третьем столбце (C) вставляем озвученную ранее формулу =СЧЁТЕСЛИ($A$2:$A$11;B2):

Сравнение email в Экселе: используем формулу СЧЁТЕСЛИ

Значки $ фиксируют нам диапазон: копирование формулы в другие ячейки не будет сдвигать его так, как это делал бы Эксель без дополнительного «закрепления».

Буквально же эта формула означает следующее:

Мы берём значение из ячейки B2 — наш первый email из списка B. «Прогоняем» его по всем адресам из столбца A. Если находится совпадение — email из B2 есть где-то в A — мы получаем напротив исходной ячейки 1. Если значение B2 в столбце A отсутствует, мы получаем на выходе 0.

→ Распространяем формулу на всю длину столбца B, получая значения 1 и 0 напротив каждого из наших сравниваемых email-ов:

Сравнение email в Экселе: распространение формулы на другие ячейки в столбце

→ Копируем результаты сравнения в четвёртый столбец (D), используя опцию «Вставить только значения», чтобы «отвязаться» от исходной формулы, которая зависит от содержания конкретных ячеек:

Сравнение email в Экселе: копирование значений формулы в соседний столбец

Если мы этого не сделаем, результаты сравнения у нас собьются в ходе последующей сортировки. При этом столбец C можно далее скрыть, чтобы «не путался под ногами».

→ Выполняем сортировку в столбце D от больших значений к меньшим, распространяя её на соседние столбцы:

Сравнение email в Экселе: результат

Вуаля: теперь в начале списка у нас оказались те email из столбца B, которые совпали со значениями из столбца A.

Далее мы уже можем воспользоваться этим результатом: скопировать его, перенести в другое место — например, сервис рассылок — удалить из списка и т.п. Сравнение email выполнено 🙂

 

Бонус: как перемешать значения в Эксель

Напоследок посмотрим ещё на один небольшой приём работы с данными в Экселе: как случайным образом перемешать значения в столбце.

Это тоже иногда пригождается при работе с рассылками: при формировании случайных выборок, перемешивании списка для его равномерного «прогрева» и других похожих задачах.

Используем для этого формулу СЛЧИС, которая возвращает в ячейки случайные десятичные дроби меньше 1.

→ Берём список email, который нужно перемешать, и размещаем его в первом столбце Экселя:

→ В соседний столбец рядом с каждым email вставляем формулу =СЛЧИС(), получая в ячейках случайное число меньше 1:

Перемешивание email в Экселе: функция СЛЧИС

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

→ Выполняем сортировку во втором столбце (по возрастанию или убыванию, особо не принципиально), распространяя её на соседний столбец с email-ами:

Перемешивание email в Экселе: результат

Всё готово — наши email-адреса перемешаны случайным образом.

 

Резюме

Несмотря на обилие сервисов и программ по работе с данными, Эксель по-прежнему крутая и полезная штука:) Пользуемся!

[В следующий раз займёмся
постановкой целей
для email-маркетинга].

P.S. Моя книга «Практичный email маркетинг» теперь доступна и в электронном виде. Если ещё не купили, всячески рекомендую.

Также, если вы пока не подписались на рассылку моего блога — самое время это сделать 😉