具有高级过滤器的循环,每个循环的新标准

时间:2014-07-31 14:19:23

标签: excel vba loops excel-vba

我有这段代码:

Sub omgifthisworks()
Sheets("data").Select
Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Sheets("log").Range("A1:A4"), Unique:=False
Sheets("Data").Select
Sheets("Data").Copy After:=Sheets(3)
ActiveSheet.Name = Sheets("banks").Range("A2").Value

enter code here

它的功能非常基础。是否可以创建一个循环,其中此代码将创建尽可能多的新工作表,因为我在列中有单元格" A"在我的"银行"工作表? 是否也可以将循环移动到右侧列的过滤条件,并仅选择与数据一样多的单元格?

我希望实现的最终结果是将创建许多具有不同名称的新数据表的代码,其中每个数据都按照新条件进行过滤。

2 个答案:

答案 0 :(得分:1)

关于循环的第一个问题,请转到此处:

http://www.excel-easy.com/vba/loop.html http://msdn.microsoft.com/en-us/library/eked04a7.aspx

对于你的第二个:

Sheets.Add After:=ActiveSheet
ActiveSheet.Name = [name you want]

答案 1 :(得分:1)

我使用这样的代码来做类似你所说的事情。

origSh 作为包含要过滤的原始数据的工作表。

filterSh 是包含高级过滤器数据的工作表。第1行包含要过滤的列标题;第2行包含要过滤的数据标准。

该过程循环遍历filterSh列,并按给定条件过滤origSh中的数据,将过滤后的数据复制到工作簿末尾的新工作表。

Sub FilterToSheets(origSh As Worksheet, filterSh As Worksheet)
    Dim filterRng As Range
    Dim newSh As Worksheet

    Set newSh = filterSh
    For Each filterRng In filterSh.UsedRange.Columns
        Set newSh = ActiveWorkbook.Worksheets.Add(after:=newSh)
        newSh.Name = filterRng.Cells(2).Text
        origSh.UsedRange.AdvancedFilter _
            Action:=xlFilterCopy, _
            criteriarange:=filterRng, _
            copytorange:=newSh.Range("A1"), _
            unique:=False
    Next
End Sub

这应该可以帮助你写一些适合你榜样的东西。