EXCEL自动筛选,即分类,用VBA

来源:百度知道 编辑:UC知道 时间:2024/06/24 15:31:23
例表如下,说明也在里面.

http://122.136.32.26/d/fid/ea6ca72ee5e0cacb22c0c5e280d1a6e6a7798443411c0000/sid/c06de562dd9d/fn/%E9%97%AE%E9%A2%98.rar
问题简单,分数可观啊.

上面的那个如果打不开,用下面的地址吧,压缩文件下载地址补充

http://www.namipan.com/d/ae83714fe1c89ecb7e58593284193206cb71c8b3411c0000

在随便那个工作表标签上(就是显示“原表”、“高系列”等等的地方),右键单击,选择“查看代码(V)”,在打开的VBA编辑窗口里双击左边的ThisWorkBook,然后在右边把下面的代码贴进去就达到你的目的了,记得要存盘,还有打开工作簿时如果提示是否运行宏,一定要让它运行:
Private Sub Workbook_Open()
Application.DisplayAlerts = False
Set 原表 = Sheets("原表")
For Each 表格 In Sheets
If 表格.Name <> 原表.Name Then 表格.Delete
Next
开始行 = ActiveSheet.UsedRange.Row + 1
结束行 = 开始行 + ActiveSheet.UsedRange.Rows.Count - 2
For 行号 = 开始行 To 结束行
类型 = 原表.Cells(行号, 1)
If 类型 <> "" Then
On Error GoTo 错误处理
Set 目的表 = Sheets(Left(类型, 1) & "系列")
On Error GoTo 0
末行 = 目的表.Cells.SpecialCells(xlCellTypeLastCell).Row
If 末行 <> 1 Or 目的表.Cells(末行, 1) <> "" Then 末行 = 末行 + 1
原表.Rows(行号).Copy 目的表.Cells(末行, 1)
End If
Next
Application.DisplayAlerts = True
Exit Sub
错误处理:
If Err.Number = 9 Then
Sheets.Add , ActiveSheet
ActiveSheet.Name = Left(类型, 1) & &qu