Excel VBA自动过滤器复制粘贴到新命名的表格中

时间:2016-04-08 11:49:55

标签: excel vba excel-vba

我有一个列(B),其中包含一些我需要过滤的不同唯一值,将粘贴复制到为这些值命名的新工作表中。我已经成功地在另一个工作簿中完成了这个,但我在这种情况下遇到了麻烦,我认为因为列中有几个空白。即使我用假人填充空白,它也会在同一个地方(第6行)中断,因为运行时错误1004:“提取范围有一个缺失或无效的字段名称”。这是我对该部分的代码:

Dim c As Range
Dim rng As Range
Dim LR As Long

    LR = Cells(Rows.Count, "R").End(xlUp).Row
    Set rng = Range("A1:BF" & LR)

    Range("B1:B" & LR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("BF1"), Unique:=True

    For Each c In Range([BF2], Cells(Rows.Count, "BF").End(xlUp))
        With rng
            .AutoFilter
            .AutoFilter Field:=2, Criteria1:=c.Value
            .SpecialCells(xlCellTypeVisible).Copy
            Sheets.Add(After:=Sheets(Sheets.Count)).Name = c.Value
            ActiveSheet.Paste
        End With
    Next c

有任何想法如何解决这个问题?作为参考,BF是包含数据的最后一列,行数是可变的,因为这是每日报告。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为丹的线索是要去的:你必须确保细胞" BF1"要么是空白,要么填充与单元格相同的值" B1"之一。

一种方法可能是删除单元格&#34; BF1&#34;在Option Explicit Sub main() Dim c As Range Dim rng As Range Dim LR As Long LR = Cells(Rows.Count, "R").End(xlUp).row Set rng = Range("A1:BF" & LR) Range("BF1").ClearContents '<== ensure possible "BF1" cell content wouldn't match "B1" cell value Range("B1:B" & LR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("BF1"), Unique:=True For Each c In Range([BF2], Cells(Rows.Count, "BF").End(xlUp)) With rng .AutoFilter .AutoFilter Field:=2, Criteria1:=c.value .SpecialCells(xlCellTypeVisible).Copy Sheets.Add(After:=Sheets(Sheets.Count)).Name = IIf(c.value = "", "Blank Key", c.value) '<== handle "blank" Key ActiveSheet.Paste End With Next c End Sub 陈述之前的内容。

最后,您还必须注意列&#34; B&#34;中的空白单元格,因为他们要求输入错误的空白页名称。

所以你可以尝试以下

onPress