ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 17053|回复: 34

[分享]新手级的自动数据透视表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-11-30 10:26 | 显示全部楼层 |阅读模式

在论坛也泡了很久了,总是偷学,现在有点小收获,和大家一起分享.

可能并不算新技巧,但对新手应该很容易懂,我是新手,我不会VB,所以方法有些笨,高手看了不要笑哦!

经常要做数据透视表,样子格式都差不多,总要重复设置,很麻烦,后来想了个办法.

1.选择录制宏

2.在准备放数据透视表的SHEET中选择数据透视表的向导(这点很重要)

3.在选择数据源区域时,按浏览,选择你的数据源

   注意两点:A.数据源尽量单独一个sheet

                   B.数据透视表向导的数据区域中要详细显示(如:明细表!$A$1:$Q$1559)

4.然后就是按你平时方法一样做,就是在数据表显示位置时,要选现有工作表,并选定一个单元格

5.透视表生成后,你一般还喜欢做什么样的格式设置呀等等,全部做完后,就可以停止录制宏了.

6.在任意单元格输入公式1=COUNTA(明细表!A:A)----->取数据源的行数

                               公式2=COUNTA(明细表!1:1)------>取数据源的列数

7.通过VB编辑器,打开刚才录制的宏

在开头加几句代码:

R = ActiveCell.CurrentRegion.Rows.Count     
C = ActiveCell.CurrentRegion.Columns.Count

'R/C是任意的,没啥意思,上面的话好像是说给R赋赋予行数的属性,给C赋予列数的属性,(这是我借鉴来的,自己也不太明白,也等高手指点呢!)

Sheets("数据透视表").Select
Range("E3").Select
R = Range("E3")
C = Range("E4")

'E3 / E4 / 数据透视表等,就是刚才放行数和列数的地方,目的就是让R=行数,C=列数

★☆★☆★☆★☆★☆★☆★☆★☆

对于新手最重要的部分到了,

录制的宏中有这样一句代码:

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "明细表!R1C1:R1559C9").CreatePivotTable TableDestination:=Range("C4"), _
        TableName:="数据透视表2"

把红字部分改成:SourceData:=  "明细表!R1C1:R" & R & "C" & C

好了,存盘,一个自动式数据透视表就完成!赶快去试试吧!

评点: 适合数据源项目相同,行数不同的表,如果有新增的项目,不能自动在数据透视表中出现,但已经包含在数据源中了,因此只要重新选择一下就可以了!

呼呼,终于写完了,当个有知识的楼主可真不容易,再次感谢许多无偿丰献的楼主.

  ZQzR53NI.rar (15.94 KB, 下载次数: 664)

附件中,我是做了一个控件,以实现,按下按钮,报表生成的愿望!!

同时还录制了一个删除的宏,将偷懒进行到底!!

有什么更好的改进方法,还希望大家一起讨论!一起进步!将偷懒进行到底!!


[此贴子已经被作者于2007-11-30 10:29:26编辑过]

TA的精华主题

TA的得分主题

发表于 2007-11-30 12:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-11-30 12:45 | 显示全部楼层
数据源新增数据后,刷新数据透视表不能引入新数据,需要删除数据透视表后再重新创建才可以,能否改进一下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-11-30 14:18 | 显示全部楼层

 3楼的问题好像我解决不了,因为这是数据透视表本身的原因,正常做数据透视表如果是在选定数据区外添加新增数据,用刷新也是不能更新数据的.但是我试过了,补救的方法有两种:

1.是用插入,如果是用插入更新是有用的;

2.把删除的代码粘贴在生成的代码前,这样就可以只按一次键,就重新生成报表了!

最后,我感觉要是真的只想用更新,估计只能"更新"的原代码,将SourceData:= "明细表!R1C1:R1559C9")的数据范围重新写入才行了,那就只能等真正的高手出现了!!

期待高手出现!!!

谢谢版主鼓励!!

TA的精华主题

TA的得分主题

发表于 2007-11-30 15:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

binyang跑来问问题,呵呵

支持楼主的分享精神

不过,你都做了个宏,做了按钮

效率会不会反而变低,可操作性会不会变差呢?

数据透视表的菜单里有刷新键

也可以设置打开刷新,每5秒刷新等

或许是我没有理解到楼主的意思

[此贴子已经被作者于2007-11-30 16:00:12编辑过]

TA的精华主题

TA的得分主题

发表于 2007-12-1 21:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
简化了一下代码,不知道是否正确? FgJjrBSD.rar (18.06 KB, 下载次数: 250)

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-12-3 08:58 | 显示全部楼层
QUOTE:
以下是引用yangjia1980在2007-11-30 15:56:02的发言:

binyang跑来问问题,呵呵

支持楼主的分享精神

不过,你都做了个宏,做了按钮

效率会不会反而变低,可操作性会不会变差呢?

数据透视表的菜单里有刷新键

也可以设置打开刷新,每5秒刷新等

或许是我没有理解到楼主的意思


那个刷新是回答别人的啦,我的原表是不需要新增什么的,我都是导好以后直接根据这张做数据透视表,要做好几张,还要重设格式,人懒,就用了这个方法,这样我只要把原表导入,按一下按钮就可以了,嘻嘻,可能一般人是用不到哦![em04]

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-12-3 09:30 | 显示全部楼层
QUOTE:
以下是引用yanjie在2007-12-1 21:35:47的发言:
简化了一下代码,不知道是否正确?

演示过了,感觉超棒!比我的不知好到那块去了!

可是又有了新的问题(我对代码看得不是太懂,有些问题可能提得不太好,请见谅)

1.我感觉这个是把数据透视表1的设置内容放入变量PT中,那如果是要根据明细表生成好几个数据表,那是不是要高好几个PT呀?

2.有几段代码猜不出来,希望YANJIE能抽空解释一下,呼呼,先谢谢了!

 a   Application.ScreenUpdating = False   这是要把屏幕刷新关闭吗?

 b  .sourceData:=Sheet1.Range("a1").CurrentRegion .Address  这是确认数据表的取值范围吗?

 C  Sheet2.PivotTables("数据透视表1").TableRange2     这是选定数据透视表的生成范围吗?

麻烦看得懂的高手指点指点!

另请问VB中的代码,什么地方有象EXCEL中的函数一样的使用指南呀?就是在FX中的,可以一边查使用说明,一边用,VB中的感觉都是代码,没有小解释,帮助有时也找不到,呼呼!

TA的精华主题

TA的得分主题

发表于 2008-9-10 16:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

改进了一下,刷新数据透视表能引入新数据了。

PACcahyh.rar (16.22 KB, 下载次数: 351)

TA的精华主题

TA的得分主题

发表于 2008-10-13 21:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xiexie
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 15:18 , Processed in 0.038784 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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