
假设数据在A到M列,从第2行开始(表头为第2行),代码如下:
Sub
test()
ActiveSheetRange("A2:M999")AutoFilter
Field:=2,
Criteria1:="投资"
Range("A2:M999")Copy
SheetsAdd
After:=Sheets(SheetsCount)
Range("A2")Select
ActiveSheetPaste
End
Sub
您可以使用VBA编写宏来实现自动筛选和自动生成多个工作表的功能。以下是一个基本的VBA示例,可将选定列中每个唯一值作为标签自动创建新工作表,并将相关数据复制到该工作表中:
Sub CreateNewSheets()
Dim ws As Worksheet
Dim newSheet As Worksheet
Dim lastRow As Long
Dim colIndex As Integer
Dim dict As Object
Set dict = CreateObject("ScriptingDictionary")
Set ws = ActiveSheet
lastRow = wsCells(RowsCount, "A")End(xlUp)Row '根据需要更改列号
colIndex = 1 '根据需要更改列号
For i = 2 To lastRow
dict(wsCells(i, colIndex)Value) = 1
Next i
For Each key In dictkeys
Set newSheet = WorksheetsAdd(After:=Worksheets(WorksheetsCount))
newSheetName = key
wsRange("A1")AutoFilter Field:=colIndex, Criteria1:=key
wsRange("A1")CurrentRegionCopy Destination:=newSheetRange("A1")
wsAutoFilterMode = False
Next key
End Sub
您可以将此代码复制并粘贴到Visual Basic Editor中,并在需要的工作表上运行该宏。请注意,您需要根据需要更改代码中的列号。
此宏假设您要按列A中的唯一值筛选数据,并使用唯一值作为新工作表的名称。如果您需要更改筛选的列或新工作表名称的生成方式,请相应地修改代码。
另外,请注意,此宏将自动在新工作表中创建筛选后的数据的副本,并不会将数据移动或删除原始工作表中。如果您需要将数据移动到新工作表中并删除原始数据,请修改代码以执行此 *** 作。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)