如何在Excel中堆栈和插入行?

我想写一个macros来得到如下图所示的结果:

从到:

abc.a@xxx.com aaa.b @ xxx.com,bbb.a @ xxx.com

我想要这样的forms:

从到

aaa.a aaa.b

aaa.a bbb.a

但macros代码(下面将介绍)写入“A”列下的所有内容,这是我不想要的。 请帮我修正下面的macros代码,以便得到如图所示的结果。

macros代码:

Sub Macro2() Dim LR As Long, Rw As Long Dim wsDATA As Worksheet, wsNEW As Worksheet Set wsDATA = ActiveSheet Set wsNEW = Sheets.Add LR = wsDATA.Range("A" & Rows.Count).End(xlUp).Row For Rw = 2 To LR wsDATA.Rows(Rw).SpecialCells(xlConstants).Copy wsNEW.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteAll, Transpose:=True Next Rw Range("A4").Select ActiveWindow.SmallScroll Down:=-3 Application.Run "'email headers.csv'!Macro2" ActiveWindow.SmallScroll Down:=-15 Columns("A:A").EntireColumn.AutoFit ActiveWindow.SmallScroll Down:=-30 Sheets("Sheet1").Select Application.WindowState = xlNormal Range("B3").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "First.Last@company.com" Range("A1").Select Sheets("Sheet2").Select Range("A8").Select End Sub 

提前感谢您的帮助。

代码的这一部分正在尝试将数据粘贴到列A的下一个可用中:

 wsNEW.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteAll, Transpose:=True 

你想要做的是find第一行中的下一个可用 (可能是),然后粘贴在那里,既然你不转置,你可以省略该参数(或将其设置为False,这是默认值。

假设你从一个空的工作表开始:

 For Rw = 2 To LR wsDATA.Rows(Rw).SpecialCells(xlConstants).Copy wsNEW.Cells(1, Rw-1).PasteSpecial xlPasteAll, Transpose:=False Next Rw 

假设您已经开始使用可能包含数据的工作表,并且第1行可以合理代理是否有任何特定的列有数据:

 For Rw = 2 To LR wsDATA.Rows(Rw).SpecialCells(xlConstants).Copy wsNEW.Cells(1, wsNew.Columns.Count).End(xlToLeft).Offset(,1).PasteSpecial xlPasteAll, Transpose:=False Next Rw