只有叹服的成分!
没有看最新的代码就18楼的代码一行行的运转了一次发现:
不明白的:为什么要加文本标识符?而且按我的运行,这个符号是运行在原来的总表上的,而不是复制出来的表上,到时最后又来一个删除好象是没必要似的!
里面还有些函数是不明白的,你还看这个贴时能答一下吗?
复制的代码如下:里面加了我的理解!
Sub hjs() Dim irow As Integer, irow1 As Integer, i As Integer, j As Integer Dim H As New Collection Dim sht As Worksheet Dim A Dim ICol
Set A = ActiveCell Application.ScreenUpdating = False Application.DisplayAlerts = False '这是做到了删除工作表时不用回答表! For Each sht In Sheets If sht.Name <> "总表" Then sht.Delete '删除所有分表 Next
Sheets("总表").Copy Before:=Sheets(1) '加入新表来操作,以防破坏原数据中的公式或格式
ICol = Application.InputBox("请输入你所要分的列:(如按B列分请输入2)", "提示:", "2", Type:=1) If ICol = "" Then Exit Sub
On Error Resume Next With Sheets("总表 (2)") irow = .[a1].CurrentRegion.Rows.Count '选择整张表,A1这当前活动 '就连续的这一片的行数,出现了空行时不能处理!' '为什么只取一块就行?确实未有处理空行分开的问题 ' 但这个数量代表什么却不太清楚,整个范围的行数?! For i = 2 To irow Cells(i, ICol) = "'" & Cells(i, ICol) '在原工作表生成文本符号 '标识要分列列单元?但这个符号看不见!.作用??? '这是在总表中做的而非在复制表做的 '为什么用了with后仍能在操作其它表,电脑是如何分别的? Next For i = 2 To irow H.Add .Cells(i, ICol), CStr(.Cells(i, ICol)) '如何理集合的使用 cstr是什么函数? '也是在总表而非复制表中做的?,刚才的本作用是不是为这个而为? Next '建立一个不重复的筛选条件
For i = 1 To H.Count 'H.Count形成集合后就已分类为类数? '前面有.的就表是前的with的? .Cells.AutoFilter field:=ICol, Criteria1:=H(i) '选择第ICol自动筛选条件是集合(i) Sheets.Add(after:=Sheets(Sheets.Count)).Name = H(i) '加表并加名!是向后加表? .[a1].CurrentRegion.Copy Sheets(CStr(H(i))).[a1] '自动筛选,并复制到新建的表中 '此种复制语句的表达要学会, 且表名的表述特别 irow1 = [a1].CurrentRegion.Rows.Count '此时是那个表?新表,还是复制后的表?结果是一的? '从后的看来,想要的是应为新的复制表!,但有否可能不是? For j = 2 To irow1 Cells(j, ICol) = Right(Cells(j, ICol), Len(Cells(j, ICol))) '消除新工作表文本符号 '新工作表根本没有文本符!何来消除?因为之前的文本符全是在总表中加入而非复制后的总表! '而据新复制表所得的,自然就没有符号可言了! Next j .Cells.AutoFilter '此处为将原来的自动筛选除去,只是为了下次循环时不会再出现不能筛选的情况! Debug.Print H(i) '不明白其中的意思 Next i .Delete '操作表此时已多余,故删除 End With A.Parent.Activate '激活汇总表的原来激活的单元格 A.Activate '这个用法不明白但可理解其义 Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
|