ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: fankairong

[原创] 数据透视表笔记(以了保持流畅性,请勿回贴,如果喜欢送朵花就行了,谢谢)

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-11-9 10:34 | 显示全部楼层
18、清除数据透视表字段下拉列表中的无用信息
2003版:将该字段拉出数据透视表;刷新数据透视表;重新将字段拉入透视表。
2007版:数据透视表选项;数据;保留从数据源删除的项目;每个字段保留的项数(设置为无)
自动:2002及以后版本适用
Sub DeleteMissingItems2002All()
'prevents unused items in non-OLAP PivotTables
'pivot table tutorial by contextures.com
Dim pt As PivotTable
Dim ws As Worksheet
Dim pc As PivotCache

'change the settings
For Each ws In ActiveWorkbook.Worksheets
  For Each pt In ws.PivotTables
    pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
  Next pt
Next ws

'refresh all the pivot caches
For Each pc In ActiveWorkbook.PivotCaches
  On Error Resume Next
  pc.Refresh
Next pc

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-11-9 10:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
19、SQL中Alias(别名的应用),在用SQL语句重构多个数据源,并用有条件时可发挥大作用。
select * from (select 货号,count(*) as js from [Sheet1$A3:C12] group by 货号)a,[Sheet1$A3:C12]b where a.js>1 and a.货号=b.货号
构建两个别名,a和b,并且a中货号=b中货号
实例参考http://club.excelhome.net/viewth ... p;page=1#pid3007352

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-11-9 12:56 | 显示全部楼层
20、判断一个单元格是否属于数据透视表
Excel 开发人员参考
Range.LocationInTable 属性
返回一个常量,该常量描述包含指定区域左上角部分的 PivotTable 部分。可为以下 XlLocationInTable 常量之一。Long 类型,只读。
语法

表达式.LocationInTable

表达式   一个代表 Range 对象的变量。

说明


XlLocationInTable 可为以下 XlLocationInTable 常量之一。
xlRowHeader
xlColumnHeader
xlPageHeader
xlDataHeader
xlRowItem
xlColumnItem
xlPageItem
xlDataItem
xlTableBody


示例


本示例显示一个消息框,用以描述数据透视表中活动单元格所在的位置。

Visual Basic for Applications
Worksheets("Sheet1").Activate
Select Case ActiveCell.LocationInTable
Case Is = xlRowHeader
    MsgBox "Active cell is part of a row header"
Case Is = xlColumnHeader
    MsgBox "Active cell is part of a column header"
Case Is = xlPageHeader
    MsgBox "Active cell is part of a page header"
Case Is = xlDataHeader
    MsgBox "Active cell is part of a data header"
Case Is = xlRowItem
    MsgBox "Active cell is part of a row item"
Case Is = xlColumnItem
    MsgBox "Active cell is part of a column item"
Case Is = xlPageItem
    MsgBox "Active cell is part of a page item"
Case Is = xlDataItem
    MsgBox "Active cell is part of a data item"
Case Is = xlTableBody
    MsgBox "Active cell is part of the table body"
End Select

Excel 开发人员参考
PivotCell 对象
代表数据透视表中的一个单元格。
说明


使用 Range 集合的 PivotCell 属性可返回一个 PivotCell 对象。

返回 PivotCell 对象后,可以使用 ColumnItems 或 RowItems 属性来确定 PivotItems 集合,对应于代表所选编号的列轴或行轴上的项目。下例使用 PivotCell 对象的 ColumnItems 属性来返回一个 PivotItemList 集合。


示例


返回了 PivotCell 对象后,可以使用 PivotCellType 属性来确定某个特定区域是什么单元格类型。下例确定数据透视表中的单元格 A5 是否是数据项目并通知用户。此示例假定活动工作表上存在数据透视表而且单元格 A5 包含在该数据透视表中。如果单元格 A5 不在数据透视表中,该示例会处理运行时错误。

Visual Basic for Applications
Sub CheckPivotCellType()

    On Error GoTo Not_In_PivotTable

    ' Determine if cell A5 is a data item in the PivotTable.
    If Application.Range("A5").PivotCell.PivotCellType = xlPivotCellValue Then
        MsgBox "The PivotCell at A5 is a data item."
    Else
        MsgBox "The PivotCell at A5 is not a data item."
    End If
    Exit Sub

Not_In_PivotTable:
    MsgBox "The chosen cell is not in a PivotTable."

End Sub

此示例确定单元格 B5 的数据项所在的列字段。然后判断列字段标题是否与“Inventory”相匹配,并通知用户。此示例假定数据透视表位于活动工作表上,并且工作表的 B 列包含数据透视表的列字段。

Visual Basic for Applications
Sub CheckColumnItems()

    ' Determine if there is a match between the item and column field.
    If Application.Range("B5").PivotCell.ColumnItems.Item(1) = "Inventory" Then
        MsgBox "Item in B5 is a member of the 'Inventory' column field."
    Else
        MsgBox "Item in B5 is not a member of the 'Inventory' column field."
    End If

End Sub

TA的精华主题

TA的得分主题

发表于 2009-11-10 20:55 | 显示全部楼层
谢谢分享  
请问在一个多数据源的透视表里,其它都是求和项,添加一个平均项或者最大项句子怎么写?

O(∩_∩)O谢谢盼复

TA的精华主题

TA的得分主题

发表于 2009-11-10 21:38 | 显示全部楼层
谢谢LZ分享
学习了!
不过有一个小小的建议,如果楼主要是把所有的笔记汇总在一个文件,上传一个附件,那就更好了!!!!!
哈哈哈哈

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-11-11 08:36 | 显示全部楼层
原帖由 亡者天下 于 2009-11-10 21:38 发表
谢谢LZ分享
学习了!
不过有一个小小的建议,如果楼主要是把所有的笔记汇总在一个文件,上传一个附件,那就更好了!!!!!
哈哈哈哈

哈哈,提议不错,不过本人只是个小小菜鸟而己,这个贴子也是主要用于记载平时学习中的一些心得而己,以备日后查阅.

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-24 08:49 | 显示全部楼层
使用数据透视中内建公式→计算字段进行汇总时,会有可能导致小数位虚增的情况。
所以对于计算字段时一般应添加round函数
未命名.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-24 08:51 | 显示全部楼层
EXCEL中使用SQL对日期进行格式化(format)及多表联合
select [数据$].经销商,[数据$].类别,[数据$].借方,[数据$].贷方,format([数据$].日期,"yymm") as 年月, [经销商$].区域 from [数据$],[经销商$] where [数据$].经销商=[经销商$].经销商

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-4-24 15:20 | 显示全部楼层
EXCEL 2007有预定义丰富的表格、数据透视表样式;但却不一定能满足我们的实际需求,因此往往需要对其进行再加工,但是系统预定义的样式便不允许直接进行修改,那应该如何对其进行再加工呢?
方法是:
选择其中一个比较接近我们需要的样式,然后右键→复制,系统将新建一个一样的样式在自定义中,然后便可在自定义中选择,便可以右键→修改。
为了达到最佳效果,往往在应用样式后应选择“数据透视表样式选项”中的镶边行与镶边列。

[ 本帖最后由 fankairong 于 2010-4-24 15:22 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-4-24 21:00 | 显示全部楼层
很好 ,留个记号,以后仔细参考与学习,已经使用了开关getpivotdata功能,谢谢

[ 本帖最后由 pdamen 于 2010-4-27 12:53 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 13:12 , Processed in 0.044036 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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