Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2559|回复: 4

[已解决]从学生信息中提取学生科目结构信息,并用树的方式表达。

[复制链接]
发表于 2012-3-8 10:16 | 显示全部楼层 |阅读模式
本帖最后由 ac5474012 于 2012-3-8 11:32 编辑

答:答案在1楼
另外配合答案和怕我自己会忘记,我总结了一个文字的操作流程。与大家分享。
1.点击 “数据” 的 “数据透视表和数据透视图”
2.在出现的窗口中(默认)选择下一步
3.选择需要透视的区 下一步
4.默认 新建工作表 完成
5.转到新创建的工作表,按照所需要的级别以此双击 数据透视表字段列表 中的字段。
6.如果不希望看到“汇总”字段,可以点击要编辑的行中的一列,鼠标右键选择“字段设置”在分类汇总中选择“无”确定即可。
问:

大家看看图就知道了
原表是这样的,我想把它更改为下面的结构。

原表

原表

变成这个
未命名.jpg
或者把学院都写在A列都可以。
求助高人怎么更改?

这是表下载
学生类型.rar (81.55 KB, 下载次数: 11)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-3-8 10:25 | 显示全部楼层    本楼为最佳答案   
可以利用透视表完成
学生类型-1.rar (108.33 KB, 下载次数: 6)

评分

参与人数 1 +1 收起 理由
ac5474012 + 1 实在是太感谢了

查看全部评分

回复

使用道具 举报

发表于 2012-3-8 10:43 | 显示全部楼层
{:15:}有点小不懂你的数据
简单的用透视表做了一下
不怎么符合你表中的要求
如果有问题你可以跟我说一下
我好及时改正{:011:}
学生类型.rar (192.19 KB, 下载次数: 2)

评分

参与人数 1 +1 收起 理由
ac5474012 + 1 1楼已经可行,不过还是非常感谢。

查看全部评分

回复

使用道具 举报

发表于 2012-3-8 11:54 | 显示全部楼层
本帖最后由 liuguansky 于 2012-3-8 11:55 编辑

效果详见附件:
单击Sheet1的按钮[每个学院分表显示]

  1. Sub justtest()
  2.     Dim D As New Dictionary, Arr, i&, BTAr, Sh As Worksheet, K&, M&, N&
  3.     Dim Ar(1 To 4), k1&, k2&, k3&, k4&, ArRe(1 To 60000, 1 To 3) As String
  4.     Application.ScreenUpdating = False
  5.     Application.DisplayAlerts = False
  6.     Arr = Range("A1").CurrentRegion.Value
  7.     For i = 2 To UBound(Arr)
  8.         If D.Exists(Arr(i, 1)) Then
  9.             If D(Arr(i, 1)).Exists(Arr(i, 2)) Then
  10.                 If D(Arr(i, 1))(Arr(i, 2)).Exists(Arr(i, 3)) Then
  11.                     If Not D(Arr(i, 1))(Arr(i, 2))(Arr(i, 3)).Exists(Arr(i, 4)) Then
  12.                         D(Arr(i, 1))(Arr(i, 2))(Arr(i, 3)).Add Arr(i, 4), ""
  13.                     End If
  14.                 Else
  15.                     D(Arr(i, 1))(Arr(i, 2)).Add Arr(i, 3), ""
  16.                     Set D(Arr(i, 1))(Arr(i, 2))(Arr(i, 3)) = New Dictionary
  17.                 End If
  18.             Else
  19.                 D(Arr(i, 1)).Add Arr(i, 2), ""
  20.                 Set D(Arr(i, 1))(Arr(i, 2)) = New Dictionary
  21.             End If
  22.         Else
  23.             D.Add Arr(i, 1), ""
  24.             Set D(Arr(i, 1)) = New Dictionary
  25.         End If
  26.     Next i
  27.     For Each Sh In Worksheets
  28.         If Sh.Name <> "Sheet1" Then
  29.             Sh.Delete
  30.         End If
  31.     Next Sh
  32.     BTAr = Array("学院", "系别", "班级")
  33.     Ar(1) = D.Keys
  34.     For k1 = 0 To UBound(Ar(1))
  35.         K = 0
  36.         With Worksheets.Add(after:=Worksheets(Worksheets.Count))
  37.             .Name = Ar(1)(k1)
  38.             .[a1] = Ar(1)(k1)
  39.             .[a2:c2] = BTAr
  40.             Ar(2) = D(Ar(1)(k1)).Keys
  41.             For k2 = 0 To UBound(Ar(2))
  42.                 M = K
  43.                 K = K + 1: ArRe(K, 1) = Ar(2)(k2)
  44.                 Ar(3) = D(Ar(1)(k1))(Ar(2)(k2)).Keys
  45.                 For k3 = 0 To UBound(Ar(3))
  46.                     N = M
  47.                     M = M + 1: ArRe(M, 2) = Ar(3)(k3)
  48.                     Ar(4) = D(Ar(1)(k1))(Ar(2)(k2))(Ar(3)(k3)).Keys
  49.                     For k4 = 0 To UBound(Ar(4))
  50.                         N = N + 1: ArRe(N, 3) = Ar(4)(k4)
  51.                     Next
  52.                 Next
  53.                 K = N
  54.             Next
  55.             .[a3].Resize(N, 3) = ArRe
  56.             .[a:c].EntireColumn.AutoFit
  57.         End With
  58.     Next
  59.     Sheet1.Activate
  60.     Application.DisplayAlerts = True
  61.     Application.ScreenUpdating = True
  62.     MsgBox "处理完毕。"
  63. End Sub
复制代码
学生类型.rar (106.75 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2012-3-8 19:49 | 显示全部楼层
什么时候换版主了?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 07:35 , Processed in 0.292149 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表