我正在尝试修复代码,将基于列中唯一值的所有行复制到新工作表中
1.该表格的 Headers 在A1:CM4范围内,还包括一张小图片
2.最后一行包含每列C:CM的SUM公式
试着得到:
1.为列A中的每个唯一值创建新工作表(复制所有适当的行,一些单元格为空),包括带有图片的 Headers (A1:CM4)
3.根据唯一值命名新工作表(可以是带空格和逗号的长名称:"aaaaa and bbbb, cccc")
4.最后一行应包含SUM公式和每列C:CM的格式
我有一个代码来完成部分工作(创建具有唯一值的新工作表),但仍然在努力解决下一个问题:
1.不复制所有 Headers (现在只复制4行中的第1行)
2.不保留/复制SUM公式的最后一行
3.如果唯一值如下,则不命名工作表:"aaaaa and bbbb, cccc"(不太重要)
Sub unique_data()
Dim RCount As Long
Dim Sht As Worksheet
Dim NSht As Worksheet
Dim I As Long
Dim TRrow As Integer
Dim Col As New Collection
Dim Title As String
Dim SUpdate As Boolean
Set Sht = ActiveSheet
On Error Resume Next
RCount = Sht.Cells(Sht.Rows.Count, 1).End(xlUp).Row - 1
Title = "A1"
TRrow = Sht.Range(Title).Cells(1).Row
For I = 5 To RCount
Call Col.Add(Sht.Cells(I, 1).Text, Sht.Cells(I, 1).Text)
Next
SUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
For I = 1 To Col.Count
Call Sht.Range(Title).AutoFilter(1, CStr(Col.Item(I)))
Set NSht = Nothing
Set NSht = Worksheets(CStr(Col.Item(I)))
If NSht Is Nothing Then
Set NSht = Worksheets.Add(, Sheets(Sheets.Count))
NSht.Name = CStr(Col.Item(I))
Else
NSht.Move , Sheets(Sheets.Count)
End If
Sht.Range("A" & TRrow & ":A" & RCount).EntireRow.Copy NSht.Range("A1")
NSht.Columns.AutoFit
Next
Sht.AutoFilterMode = False
Sht.Activate
Application.ScreenUpdating = SUpdate
MsgBox "All done!", vbExclamation
End Sub
非常感谢任何帮助!
1 回答
我设法修复了我的代码并获得了正确的结果(在命名电子表格时仍然存在一些问题,因为有些名称相当长而且excel不会将它们命名为选项卡),但无论如何这里是代码正在做的事情:
1.根据主工作表的特定范围(A5:..)中的唯一值创建新电子表格并复制相应的行
2.根据唯一值重命名新电子表格
3.将所有 Headers 的行(4)复制到新的电子表格中
4.使用SUM公式复制最后一行,并根据返回的记录数调整每个电子表格的总和范围
5.格式化新的电子表格
我希望有人可以使用此代码来解决类似的谜题或者可以使其更有效率 .