我有这段代码:
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"在我的"银行"工作表? 是否也可以将循环移动到右侧列的过滤条件,并仅选择与数据一样多的单元格?
我希望实现的最终结果是将创建许多具有不同名称的新数据表的代码,其中每个数据都按照新条件进行过滤。
答案 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
这应该可以帮助你写一些适合你榜样的东西。