Вот решение, которое не требует VBA, которая является более простым подходом, если вам не нужно делать это много.
Если вы хотите получить все электронные письма в одну ячейку, вы можете сделать это, просто используя формулу в третьем столбце. Если предположить, что ваши данные начинается в A1, без заголовков, просто вставьте эту формулу в C1 и заполнить вниз:
=if(A2<>"",B1,B1 & ";" & C2)
Эта формула виды работ снизу вверх.
Если следующая строка в столбце A имеет значение, следующая строка представляет собой новое электронное письмо, поэтому текущая строка является последней строкой текущего адреса электронной почты. В этом случае начните с текущего получателя.
Если следующая строка в столбце A не имеет значения, следующая строка является частью одного и того же адреса электронной почты, поэтому текущий получатель может быть добавлен в список получателей. (Добавление его в начало списка сохраняет получателей в том же порядке.)
В результате столбец C будет иметь полный список получателей в одной ячейке в строках, которые имеют электронную почту в столбце A.
В последнем письме будет добавлена дополнительная точка с запятой в конце, с которой мы могли бы избавиться от немного сложнее, но если вы просто отправляете электронные письма, это не имеет значения, и это проще понять!
Значения в столбце C в «промежуточных» строках являются только рабочими значениями и не требуются. Вы можете полностью избавиться от промежуточных рядов:
Скопируйте всю таблицу; вставить как значения (поверх себя или на новый лист); фильтруйте таблицу, устанавливая столбец электронной почты, равный пробелам (для отображения промежуточных строк), затем выберите и удалите все видимые строки. Очистите фильтр, который будет оставлен только с вашими электронными письмами и полными получателями. Затем вы также можете удалить столбец B, который содержит только первого получателя для каждого письма.
Теперь это подходит для использования в электронной почте. Однако, если вам действительно нужны получатели, разделенные на отдельные столбцы, просто используйте функцию «Текст-Колонка»:
Выберите столбец с объединенными сообщениями электронной почты, перейдите на вкладку «Данные» на ленте, нажмите «Текст-в-столбцы», Столбцы, выберите «Разделить» и нажмите «Далее», выберите «Точка с запятой» в качестве разделителя и нажмите «Готово». Вуаля!
Вы говорите, что вам нужен макрос VBA для его завершения, потому что вы делаете это очень часто, или вы просто предполагаете, что в Excel нет возможности легко сделать это? – Michael