【发布时间】:2020-07-21 07:23:31
【问题描述】:
我正在尝试将过滤后的数据从一个工作表复制到另一个工作表,但由于某种原因,我收到运行时错误 1004,提示“要将所有单元格从另一个工作表复制到此工作表,请确保将它们粘贴到第一个单元格(A1 或R1C1)" 我实际上不想复制标题行,所以该行的所有可见栏
我想要的是将复制的数据粘贴到目标工作表中的第一个可用行。这是我拥有的用于过滤某些内容的代码,但随后落在粘贴行上
Sub BBWin()
'
' BB Win Macro
' This macro will filter BB Win 1 - 8
'
With ActiveSheet.Range("A1").CurrentRegion
With .Resize(, .Columns.Count + 1)
With .Cells(2, .Columns.Count).Resize(.Rows.Count - 1)
.FormulaR1C1 = "=if(or(rc7={""K.BB_Win_1_2019"",""K.BB_Win_2_2019"",""K.BB_Win_3_2019"",""K.BB_Win_4_2019"",""K.BB_Win_5_2019"",""K.BB_Win_6_2019"",""K.BB_Win_7_2019"",""K.BB_Win_8_2019""}),""X"","""")"
.Value = .Value
End With
.HorizontalAlignment = xlCenter
End With
Cells.Select
Selection.SpecialCells(xlCellTypeVisible).Copy
Workbooks("Predictology-Reports.xlsx").Sheets("BB Reports").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub
有什么建议可以让它正常工作吗?
==========================================
好吧,也许我应该以另一种方式尝试这个问题,发布我提供的原始工作宏,而不是发布我重写它的尝试。
这与我在上面发布的内容基本相同,只是更改了公式以查找不同的文本,尽管它也具有自动筛选设置(我不需要)和隐藏列(我不需要)做)。这对我来说非常有效,并且完全符合它的预期。我基本上试图复制它并删除不需要的元素,但正如您所见,发现最初指出的错误。显然,我的知识有限导致了最初的问题。
Sub Low_Risk()
'
' Low Risk Lays Macro
' This macro will filter for Remove VDW Rank 1, Class, Distance <=1650, # of Runners <=9, Exclude Brighton, Yarmouth, Windsor & Wolverhampton
'
With ActiveSheet.Range("A1").CurrentRegion
With .Resize(, .Columns.Count + 1)
With .Cells(2, .Columns.Count).Resize(.Rows.Count - 1)
.FormulaR1C1 = "=if(or(rc8={""Brighton"",""Yarmouth"",""Windsor"",""Wolverhampton""}),""X"","""")"
.Value = .Value
End With
.AutoFilter Field:=4, Criteria1:="<=9"
.AutoFilter Field:=11, Criteria1:="<=1650"
.AutoFilter .Columns.Count, "<>X"
.AutoFilter Field:=29, Criteria1:="<>1"
.HorizontalAlignment = xlCenter
End With
.Columns("C:C").EntireColumn.Hidden = True
.Columns("G:G").EntireColumn.Hidden = True
.Columns("I:I").EntireColumn.Hidden = True
.Columns("L:L").EntireColumn.Hidden = True
.Columns("N:W").EntireColumn.Hidden = True
.Columns("Y:AB").EntireColumn.Hidden = True
.Columns("AD:AJ").EntireColumn.Hidden = True
.Columns("AO:AO").EntireColumn.Hidden = True
.Columns("AQ:BQ").EntireColumn.Hidden = True
.Columns("BT:CP").EntireColumn.Hidden = True
.Parent.AutoFilter.Range.Offset(1).Copy
Workbooks("New Results File.xlsm").Sheets("Low Risk Lays").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
End With
Application.CutCopyMode = False
End Sub
如前所述,这绝对完美,嵌套 Withs 和所有。我可以更改原始公式,使其在正确的列中查找并且仅针对我想要的文本,但我显然无法成功删除自动过滤器元素和隐藏列的元素而不会出现错误。我认为删除 .Parent.AutoFilter.Range.Offset(1).Copy 行是罪魁祸首,但不确定如何删除不需要的元素。
这个原始宏是在一个论坛中提供给我的,我不愿意更改公式部分,它可以很好地查找需要复制的许多文本元素。这就是为什么我只希望更改自动过滤部分和隐藏列部分
我不确定这是否有帮助,但它可能会澄清一些事情
非常感谢您的努力
【问题讨论】: