VBA筛选表并将结果列的子集复制到剪贴板
我正在尝试将源表中的行和列的子集自动复制到剪贴板中,以便在其他应用程序中使用。我在表的标题上创建过滤器并正确过滤行,但不知道如何按照我想要的顺序选择列的子集。源表是A-L列,我希望在应用过滤器后,按该顺序将C、I、H和F列复制到剪贴板。下面包括一些代码(不包括复制部分)VBA筛选表并将结果列的子集复制到剪贴板,vba,excel,filter,copy-paste,Vba,Excel,Filter,Copy Paste,我正在尝试将源表中的行和列的子集自动复制到剪贴板中,以便在其他应用程序中使用。我在表的标题上创建过滤器并正确过滤行,但不知道如何按照我想要的顺序选择列的子集。源表是A-L列,我希望在应用过滤器后,按该顺序将C、I、H和F列复制到剪贴板。下面包括一些代码(不包括复制部分) Sub exportExample() Dim header As Range Dim srcCol As Range Set header = [A5:L5] header.AutoFilt
Sub exportExample()
Dim header As Range
Dim srcCol As Range
Set header = [A5:L5]
header.AutoFilter
header.AutoFilter 12, "Example", xlFilterValues
'Copy out columns C, I, H and F of the resulting table in that order
End Sub
我知道如何复制列,但不知道如何按所需顺序复制列。非常感谢您的帮助!谢谢 这就是你正在尝试的吗?我已经对代码进行了注释,这样您在理解代码时就不会有任何问题 逻辑:
With rngToCopy
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
end with
将上述代码放在行
Debug.Print rngToCopy.Address
之后,您必须单独复制列,因为引用范围的对象要求单元格按顺序排列
像这样的方法应该会奏效:
activeworkbook.Sheets(1).Columns("C:C").copy activeworkbook.Sheets(2).Columns("A:A")
activeworkbook.Sheets(1).Columns("I:I").copy activeworkbook.Sheets(2).Columns("B:B")
activeworkbook.Sheets(1).Columns("H:H").copy activeworkbook.Sheets(2).Columns("C:C")
activeworkbook.Sheets(1).Columns("F:F").copy activeworkbook.Sheets(2).Columns("D:D")
那么你应该能够做到:
activeworkbook.Sheets(2).Columns("A:D").copy
要将其放入剪贴板您可能需要在工作表的另一个区域(或新工作表)上按所需顺序逐列复制,然后复制整个范围。是否应该相反?我的意思是复制C~~>A,其他的也一样?第二行“B:a”中也有一个拼写错误?哦,是的,应该是另一种情况(也有固定的拼写错误)。谢谢你的回答。我会尝试这个方法,因为它有点简单。这很有效,谢谢!我需要修改代码以去除一些格式(表中的边框),但我应该能够找到它。不将标题行复制到临时工作表是一种快速更改吗?将此
rngToCopy.copy wsTemp.Range(“A1”)
更改为rngToCopy.copy
,并在下一行中放置此wsTemp.Range(“A1”).Paste特殊粘贴:=xlPasteValues,操作:=xlNone,skipblank:=False,转置:=False
忽略最后的注释,我想出了如何修改代码来做到这一点。再次感谢你的帮助!!!好的,那一行将日期转换成整数。您想删除边框还是其他格式?
activeworkbook.Sheets(2).Columns("A:D").copy