写一个VBA代码实现以下需求: 1.以result工作表的E列2行到最后一行的单元格的值命名,批量在新建excel工作簿的最后新建对应单元格值命名的工作表 2.在result工作表的C列筛选,如果筛选是值与新建的工作表名称一致,则将A到C列的使用单元格的所有行,复制粘贴到对应新建工作表名称的A1,
时间: 2024-02-17 19:03:52 浏览: 158
以下是实现上述需求的VBA代码:
```
Sub CreateNewSheets()
Dim wb As Workbook
Dim wsResult As Worksheet
Dim lastRow As Long
Dim i As Long
'获取result工作表
Set wb = ThisWorkbook
Set wsResult = wb.Worksheets("result")
'获取E列最后一行
lastRow = wsResult.Cells(wsResult.Rows.Count, "E").End(xlUp).Row
'遍历E列2行到最后一行的单元格
For i = 2 To lastRow
'获取单元格的值
Dim sheetName As String
sheetName = wsResult.Cells(i, "E").Value
'新建工作表
Dim wsNew As Worksheet
Set wsNew = wb.Worksheets.Add(After:=wb.Worksheets(wb.Worksheets.Count))
wsNew.Name = sheetName
'筛选C列
wsResult.Range("A:C").AutoFilter Field:=3, Criteria1:=sheetName
'复制粘贴数据
Dim copyRange As Range
Set copyRange = wsResult.Range("A1:C" & lastRow).SpecialCells(xlCellTypeVisible)
copyRange.Copy wsNew.Range("A1")
'取消筛选
wsResult.AutoFilterMode = False
Next i
End Sub
```
请将此代码复制到你的VBA编辑器中,并在运行之前请先备份你的工作簿,以防意外情况发生。在运行此代码之后,它将执行以下操作:
1. 遍历result工作表的E列2行到最后一行的单元格。
2. 以单元格的值为名称,新建一个工作表。
3. 在result工作表的C列中筛选与新建工作表名称一致的行。
4. 将A到C列的使用单元格的所有行复制粘贴到对应新建工作表名称的A1。
5. 取消C列的筛选。
阅读全文