这是我从其他人的帖子和建议中收集的当前代码,并对其进行了修改以满足我的需要。
'代码的作用
它当前读取表中的值,过滤值以创建唯一列表,它获取这些值并创建一个名为唯一列表的工作表,其中包含列表中的这些值。根据该列表,它为表中列出的每个唯一值创建一个工作表。
'问题
到目前为止,此代码运行良好,但现在我需要根据这些唯一值添加信息。下面我将注释('> 我想在此处插入新程序)添加到我想要放置新程序的位置(这将添加来自原始数据表的数据)。以下是我要添加的程序。但是当我运行它时,它会创建比它应该的更多的选项卡,然后关闭我的 Excel。此插件的预期结果是使用唯一值转到原始表,根据每个唯一值过滤表并复制某些列中的所有信息,然后将它们粘贴回与刚刚创建的相关的工作表中之前的特定值。
老实说,我认为这是因为我在测试过程中有 rCell 并且它不喜欢这样。我知道如何访问“原始数据”表并复制信息,但我不知道如何返回上一张表。我会根据它的名称调用该表,但我需要它是一个循环并针对该列表中的每个唯一值运行。
任何帮助,将不胜感激。我知道它有很多值得阅读的地方。我只想为你们提供尽可能多的信息,以帮助你们了解我的项目。
'this is the code i want to insert into my 'Pagesbydescription' macro
'test start
Sheets("Raw Data").Select
Selection.AutoFilter
ActiveSheet.ListObjects("Table3").Range.AutoFilter Field:=11, Criteria1:= _
rCell
Range("A3:J5000").Select
Selection.Copy
Sheets.Select
Range("A3").Select
ActiveSheet.Paste
Columns("A:K").EntireColumn.AutoFit
'test end
Sub PagesByDescription()
'
'PagesByDescription
'
Dim rRange As Range, rCell As Range
Dim wSheet As Worksheet
Dim wSheetStart As Worksheet
Dim strText As String
Set wSheetStart = ActiveSheet
wSheetStart.AutoFilterMode = False
'Set a range variable to the correct item column
Set rRange = Range("K4", Range("K5000").End(xlUp))
'Delete any sheet called "UniqueList"
'Turn off run time errors & delete alert
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("UniqueList").Delete
'Add a sheet called "UniqueList"
Worksheets.Add().Name = "UniqueList"
'Filter the Set range so only a unique list is created
With Worksheets("UniqueList")
rRange.AdvancedFilter xlFilterCopy, , _
Worksheets("UniqueList").Range("A1"), True
'Set a range variable to the unique list, less the heading.
Set rRange = .Range("A1", .Range("A5000").End(xlUp))
End With
On Error Resume Next
With wSheetStart
For Each rCell In rRange
strText = rCell
.Range("k1").AutoFilter 1, strText
Worksheets(strText).Delete
'Add a sheet named as content of rCell
Worksheets.Add().Name = strText
'> I would like to Insert new procedure here
Next rCell
End With
With wSheetStart
.AutoFilterMode = False
.Activate
End With
On Error GoTo 0
Application.DisplayAlerts = True
Application.DisplayAlerts = False
Sheets("NA").Delete
Sheets("BODY").Delete
Sheets("BODY PREBUILD").Delete
Application.DisplayAlerts = True