作为我项目的一部分,我有一个表,其中包含在每个列中向下拖动整个表的查找公式。根据情况,只有前x行返回值。我包含了一个iferror,以便不返回值的查找返回“”。
现在我想将返回值的表的行复制到另一个工作表中不同表中的第一个空行。
到目前为止我的代码: Sub Copy_Results()
Application.ScreenUpdating = False
Dim copySheet As Worksheet
Dim pasteSheet As Worksheet
Set copySheet = Worksheets("Sheet1")
Set pasteSheet = Worksheets("Sheet2")
copySheet.Range("Table1").Copy
pasteSheet.ListObjects("Table2").Range.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
现在最大的问题是我希望能够多次执行此宏,每次表1中的值应粘贴在表2中预先存在的值之下。
关键是每次查找值改变意味着我得到新结果时我想将它们粘贴到一个表中,其中记录了所有结果。
到目前为止我遇到的问题: 第一个复制粘贴通常可以工作,但是当我再次复制时,值会粘贴到表格外面的第一个以下。通常表的全长离开。我想这是因为整个副本表都填充了公式。
答案 0 :(得分:0)
最简单的方法是使用SpecialCells方法限制要复制的单元格:
https://msdn.microsoft.com/en-us/library/office/ff196157.aspx
在这种情况下,您只想复制以数字作为值的公式,因此这将是语法:
SpecialCells(xlCellTypeFormulas, xlNumbers)
将代码放入:
copySheet.Range("Table1").SpecialCells(xlCellTypeFormulas, xlNumbers).Copy
您可以在代码之外看到这个操作,方法是在源表中选择完整范围,然后按F5,选择弹出对话框底部的“特殊”按钮,然后选择“公式”和“数字” ”
要确保它粘贴到下一个可用行中,请使用CurrentRegion属性:
https://msdn.microsoft.com/en-us/library/office/ff196678.aspx?f=255&MSPPError=-2147217396
此代码将告诉您单元格A1定义的使用区域中的最后一行:
pasteSheet.cells(1,1).CurrentRegion.Rows.Count
我相信您正在寻找的粘贴命令将接近这一点(如果没有您的电子表格,很难完全测试):
pasteSheet.cells(pasteSheet.cells(1,1).CurrentRegion.Rows.Count + 1, 1).PasteSpecial xlPasteValues