gpt4 book ai didi

excel - 使用 VBA 在 Excel 中将主电子表格拆分为多个工作表

转载 作者:行者123 更新时间:2023-12-04 03:31:39 25 4
gpt4 key购买 nike

(抱歉,我是新来的,所以请多多包涵哈哈)所以我从 YouTube 教程 (https://www.youtube.com/watch?v=5bOFNsdHiPk&t=326s) 中获得了这段代码,我希望能得到进一步的帮助...

Sub SplitandFilterSheet()
'Step 1 - Name your ranges and Copy sheet
'Step 2 - Filter by Department and delete rows not applicable
'Step 3 - Loop until the end of the list
Dim Splitcode As Range
Sheets("Master").Select
Set Splitcode = Range("Splitcode")

For Each cell In Splitcode
Sheets("Master").Copy After:=Worksheets(Sheets.Count)
ActiveSheet.Name = cell.Value

With ActiveWorkbook.Sheets(cell.Value).Range("MasterData")
.AutoFilter Field:=4, Criteria1:="<>" & cell.Value, Operator:=xlFilterValues
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With

ActiveSheet.AutoFilter.ShowAllData
Next cell
End Sub

我一直收到“该名称已被占用。尝试使用不同的名称。”在线错误(ActiveSheet.Name = cell.Value)。它似乎只是完整地复制了“母版”工作表,而不是通过其余的过滤/复制过程,因为每次我点击运行时它都会生成一个母版 (2) 和母版 (3) 工作表。

最佳答案

您的错误消息是因为代码试图使用已经存在的名称重命名工作表。您的代码几乎是一种“运行一次”的方法。

您可以先删除任何现有工作表来处理错误。

Sub SplitandFilterSheet()

Dim Splitcode As Range, wb As Workbook, cell As Range, nm As String
Dim wsMaster As Worksheet

Set wb = ActiveWorkbook
Set wsMaster = wb.Sheets("Master")
Set Splitcode = wsMaster.Range("Splitcode")

For Each cell In Splitcode.Cells
nm = cell.Value

On Error Resume Next 'ignore error if no sheet with this name
wb.Sheets(nm).Delete 'delete any existing sheet with this name
On Error Goto 0 'stop ignoring errors

wsMaster.Copy After:=wb.Worksheets(wb.Sheets.Count)
With wb.Worksheets(wb.Sheets.Count)
.Name = nm
With .Range("MasterData")
.AutoFilter Field:=4, Criteria1:="<>" & nm, Operator:=xlFilterValues
.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
End With
.AutoFilter.ShowAllData
End with
Next cell
End Sub

关于excel - 使用 VBA 在 Excel 中将主电子表格拆分为多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66694136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com