我正在尝试编写一个宏来获得结果,如下图所示:
来自:收件人:
abc.a@xxx.com aaa.b @ xxx.com,bbb.a @ xxx.com
我希望以这种形式:
From To
aaa.a aaa.b
aaa.a bbb.a
但宏代码(如下所述)会将所有内容写在“A'”列下,这是我不想要的。 请帮我纠正以下宏代码,以便得到如图所示的结果。
宏代码:
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
提前感谢您的帮助。
答案 0 :(得分:0)
这段代码试图将数据粘贴到A列的下一个可用行中:
wsNEW.Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteAll, Transpose:=True
你想要做的是在第1行找到下一个可用的列(大概),并在那里粘贴,因为你没有转置,你可以省略该参数(或设置)它为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