关于Excel中将总表按照分类不同分列到不同表中,应如何编写函数?
发布网友
发布时间:2022-05-27 10:36
我来回答
共4个回答
热心网友
时间:2023-10-16 23:29
亲,打开你的Excel文件,按“Alt+F11”打开VBA编辑窗口,然后在左侧对应的Sheet上双击,右侧空白处粘贴下面的代码。关闭VBA窗口。然后按“Alt+F8”打开宏窗口,选择刚插入的宏,点击“执行”。
Sub cf()
On Error Resume Next
Dim bt, i, r, c As Long
bt = 1 '标题行的行数
r = Cells(Rows.Count, "A").End(xlUp).Row
c = Cells(1, Columns.Count).End(xlToLeft).Column
For i = bt + 1 To r
If Sheets("分类表" & Range("B" & i).Value) Is Nothing Then
Sheets.Add(after:=Sheets(Sheets.Count)).Name = "分类表" & Range("B" & i).Value
Range("A1").Resize(bt, c).Copy Sheets("分类表" & Range("B" & i).Value).Range("A1")
End If
Range("A" & i).Resize(1, c).Copy Sheets("分类表" & Range("B" & i).Value).Range("A" & Sheets("分类表" & Range("B" & i).Value).Cells(Rows.Count, "A").End(xlUp).Row + 1)
Next
End Sub
追问大神,先膜拜下。然后您可否简单讲下宏中14行的大体原理,我已弄成,但是具体不太懂,万分感谢
追答额……你说的是第12句?
Range("A" & i).Resize(1, c).Copy Sheets("分类表" & Range("B" & i).Value).Range("A" & Sheets("分类表" & Range("B" & i).Value).Cells(Rows.Count, "A").End(xlUp).Row + 1)
这一句看着吓人,其实就是两部分:
Range("A" & i).Resize(1, c).Copy:当前表的当前行COPY
Sheets("分类表" ……:这一句拆开,首先用Cells(Rows.Count, "A").End(xlUp).Row + 1,取目标分类表的A列有数据的最后一行,然后加1作为粘贴目标行。前面套上“A”列。注意一下对分类表的引用即可。
热心网友
时间:2023-10-16 23:29
把你样表发过来吧。QQ413186190
你在分类表A的B2输入=IF(ISERROR(INDEX(信息总表!B$1:B$1000,SMALL(IF(信息总表!$B$1:$B$1000="A",ROW(信息总表!$B$1:$B$1000),4^8),ROW(A1)))),"",INDEX(信息总表!B$1:B$1000,SMALL(IF(信息总表!$B$1:$B$1000="A",ROW(信息总表!$B$1:$B$1000),4^8),ROW(A1))))按CTRL+SHIFT+回车结束公式,再把B2向右填充至E2,再把B2:E2一起向下填充公式
再在分类表B的B2输入=IF(ISERROR(INDEX(信息总表!B$1:B$1000,SMALL(IF(信息总表!$B$1:$B$1000="B",ROW(信息总表!$B$1:$B$1000),4^8),ROW(A1)))),"",INDEX(信息总表!B$1:B$1000,SMALL(IF(信息总表!$B$1:$B$1000="B",ROW(信息总表!$B$1:$B$1000),4^8),ROW(A1))))按CTRL+SHIFT+回车结束公式,再把B2向右填充至E2,再把B2:E2一起向下填充公式追问太神奇了,就是我想要的,也同样感谢编辑宏的大神,但是,我最需要的是这种函数。
热心网友
时间:2023-10-16 23:30
数据透视表
供参考。追问能否用函数解决?
追答尺有所短,寸有所长。为什么非要用函数呢?
热心网友
时间:2023-10-16 23:30
正在帮你试着弄............