2017-02-02 3 views
0

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

Из приведенной ниже таблицы я пытаюсь превратить каждое электронное письмо только в одну строку, вместо того, чтобы иметь получателей в столбце B. Действительно сложная часть (для меня) заключается в том, что количество строк в рассылке будет отличаться из-за количество получателей варьируется. Есть ли способ заставить данные получателя перемещаться из нескольких строк в одну строку?

Email 1 Recipient 1 
      Recipient 2 
      Recipient 3 
Email 2 Recipient 1 
      Recipient 2 
Email 3 Recipient 1 
      Recipient 2 
+0

Вы говорите, что вам нужен макрос VBA для его завершения, потому что вы делаете это очень часто, или вы просто предполагаете, что в Excel нет возможности легко сделать это? – Michael

ответ

1

Вот решение, которое не требует VBA, которая является более простым подходом, если вам не нужно делать это много.

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

=if(A2<>"",B1,B1 & ";" & C2) 

Эта формула виды работ снизу вверх.

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

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

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

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

Значения в столбце C в «промежуточных» строках являются только рабочими значениями и не требуются. Вы можете полностью избавиться от промежуточных рядов:

Скопируйте всю таблицу; вставить как значения (поверх себя или на новый лист); фильтруйте таблицу, устанавливая столбец электронной почты, равный пробелам (для отображения промежуточных строк), затем выберите и удалите все видимые строки. Очистите фильтр, который будет оставлен только с вашими электронными письмами и полными получателями. Затем вы также можете удалить столбец B, который содержит только первого получателя для каждого письма.

Теперь это подходит для использования в электронной почте. Однако, если вам действительно нужны получатели, разделенные на отдельные столбцы, просто используйте функцию «Текст-Колонка»:

Выберите столбец с объединенными сообщениями электронной почты, перейдите на вкладку «Данные» на ленте, нажмите «Текст-в-столбцы», Столбцы, выберите «Разделить» и нажмите «Далее», выберите «Точка с запятой» в качестве разделителя и нажмите «Готово». Вуаля!

+0

Привет, Майкл, не уверенный, как ты об этом подумал, и я не думал о том, чтобы делать это, но ты, мой друг, гений. Он отлично работал. – Xaser

+0

Супер удивительная идея о том, как переместить электронные письма на указанную выше линию, запомнит это для будущего использования. –

+0

Обратите внимание, что эта формула предполагает, что столбец А содержит только каждое электронное письмо, идентифицированное один раз, против первого получателя.Если ваши данные находятся в формате базы данных, где «E-mail 1» повторяется для каждого получателя для этого письма, формула должна быть заменена вместо поиска изменений в столбце A: = if (A2 <> A1, B1, B1 & "; "& C2) – Michael

Смежные вопросы