首页 > 解决方案 > Excel AdvanceFilter vba copyToRange 仅适用于最顶层行

问题描述

我在工作簿中有一张“RM”表,在同一个工作簿中有另一张表“ST”。“RM”有表2,“ST”有表3

我使用以下代码从 RM 复制到另一张工作表“Andy” refName 是“Andy”中的条件,topRowName 是字符串“Andy!B1:M1”

Sheets("RM").Range("Table2[#All]").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(refName), CopyToRange:=Range(topRowName), Unique:= _
        False

到目前为止一切顺利,一切正常现在我想从“ST”也复制到“Andy”,但将它粘贴到“topRowName”下面几行,这样它就不会被覆盖,所以我做了一个偏移

Sheets("ST").Range("Table3[#All]").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(refName), CopyToRange:=Range(topRowName).Offset(5), Unique:= _
        False

但它会引发 1004 错误“提取范围的字段名称丢失或无效”

我试图像这样对 Range 中的值进行硬编码

Sheets("RM").Range("Table2[#All]").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(refName), CopyToRange:=Range(Andy!B5:M5), Unique:= _
        False

但它仍然不起作用。是因为粘贴位置有表格吗?我试图调整表格的大小,使其不会与新粘贴冲突,但它没有帮助。任何帮助表示赞赏

标签: excelvbaexcel-tablesadvanced-filter

解决方案


谢谢大家,我找到了发生这种情况的原因的答案。我需要清除我要粘贴到的地方的内容。显然,如果已经存在某些内容,尤其是像表格这样的 ListObject,Excel 不喜欢将内容复制到范围内。我以为它只会写在上面。


推荐阅读