移动行数不同的数据

我需要将数据连续移动到列。 基本上是一个转置。

从下面的表格我试图把每个电子邮件变成一个单一的行,而不是让收件人倒B栏。真正棘手的部分(对我来说)是每个电子邮件的行数将有所不同,因为收件人的数量变化。 有没有办法让收件人数据从多行移动到单行?

Email 1 Recipient 1 Recipient 2 Recipient 3 Email 2 Recipient 1 Recipient 2 Email 3 Recipient 1 Recipient 2 

这是一个不需要VBA的解决scheme,如果你不需要这么做的话,这是一个更简单的方法。

如果你想把所有的邮件都放到一个单元格中,你可以使用第三列中的公式来做到这一点。 假设你的数据从A1开始,没有标题,只需要将这个公式粘贴到C1中并填写:

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

这种公式从下到上的作品。

如果A列中的下一行有一个值,则下一行是一个新的电子邮件,所以当前行是当前电子邮件的最后一行。 在这种情况下,从当前收件人开始。

如果A列中的下一行没有值,则下一行是同一电子邮件的一部分,因此可将当前收件人添加到收件人列表中。 (将它添加到列表的开头将保持收件人的顺序不变。)

结果是列C将具有列A中具有电子邮件的行上的单个单元中的收件人的完整列表。

最后一封电子邮件最后会有一个额外的分号,我们可以摆脱一些复杂性,但是如果您只是发送电子邮件,这并不重要,这更容易理解!

“中间”行中列C中的值只是工作值,并不是必需的。 你可以完全摆脱中间行:

复制整个表格; 粘贴为值(超过自身或新的工作表); 过滤设置电子邮件列等于空格的表(以显示中间行),然后select并删除所有可见的行。 清除filter只留下您的电子邮件和完整的收件人。 然后,您也可以删除列B,其中只包含每个电子邮件的第一个收件人。

这现在适合用于电子邮件。 但是,如果您确实需要将收件人拆分为单独的列,则只需使用“文本到列”function即可:

select合并电子邮件的列,转到function区上的数据选项卡,单击文本到列,select分隔符,然后单击下一步,select分号作为分隔符,然后单击完成。 瞧!