ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA 如何判断是 模型数据透视表 还是一般数据透视表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-9 11:09 | 显示全部楼层 |阅读模式
VBA 如何判断是 模型数据透视表 还是一般数据透视表。

TA的精华主题

TA的得分主题

发表于 2023-3-9 11:12 | 显示全部楼层
打开 Excel,按下 Alt + F11 进入 VBA 编辑器界面;

在 VBA 代码中,通过以下语句获取数据透视表的 PivotTable 对象:
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables(1)
其中,“ActiveSheet.PivotTables(1)”表示获取当前活动工作表中的第一个数据透视表,你可以根据需要修改这个参数。

使用以下语句获取数据透视表的数据源类型:
Dim srcType As XlPivotTableSourceType
srcType = pt.SourceType
其中,“XlPivotTableSourceType”是枚举类型,包含以下值:
xlDatabase:一般数据透视表;
xlConsolidation:多重来源数据透视表;
xlExternal:来自外部源的数据透视表;
xlScenario:可变数据表。
如果数据透视表的 SourceType 属性值为 xlDatabase,则表示它是一般数据透视表;如果 SourceType 属性值为 xlConsolidation、xlExternal 或 xlScenario,则表示它是模型数据透视表。

根据 SourceType 属性值判断数据透视表的类型:
If srcType = xlDatabase Then
MsgBox "一般数据透视表"
Else
MsgBox "模型数据透视表"
End If
通过以上步骤,你可以判断数据透视表的类型,并根据需要进行后续操作。

TA的精华主题

TA的得分主题

发表于 2023-3-9 11:26 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-9 14:17 | 显示全部楼层
自从用了VBA就再没用过透视表。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 15:06 | 显示全部楼层
感谢2楼的回复,我竟然没看到,我自己摸索了一下。
模型透视表的字段名,都是类似:[区域].[公司].[公司]
而一般透视表的字段名都是类似:公司
我就通过判断最左侧有没有 [ 字符,有没有小数点 .来判断了,感觉基本不错。

Set PT = ActiveCell.PivotTable '当前透视表

If (Left(PT.RowFields(1), 1) = "[") And InStr(PT.RowFields(1), ".") Then
    tsbbm = Left(PT.RowFields(1), InStr(PT.RowFields(1), ".")) '表名或区域名,后面带.
    flag_cj = True '超级透视表
   
Else
    flag_cj = False '一般透视表
End If

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 15:13 | 显示全部楼层
试了一下二楼的代码,运行到 srcType = pt.SourceType 这一句时报错

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 16:34 | 显示全部楼层
ykcbf1100 发表于 2023-3-9 14:17
自从用了VBA就再没用过透视表。

VBA能替代透视表吗?VBA连函数都不能替代。

你学了VBA后,不再用透视表,可能你透视表用得比较浅,需求不多,VBA能完全代替这部分需求。

但是你不可能用VBA重写一个可以拖拖拉拉就汇总各类数据的工具吧。更何况透视表还关联这透视图。

TA的精华主题

TA的得分主题

发表于 2023-3-9 19:31 | 显示全部楼层
mmwwdd 发表于 2023-3-9 11:12
打开 Excel,按下 Alt + F11 进入 VBA 编辑器界面;

在 VBA 代码中,通过以下语句获取数据透视表的 Pivo ...

这个。。。不会是l来自ChatGPT的吧?

TA的精华主题

TA的得分主题

发表于 2023-3-9 20:37 | 显示全部楼层
什么是模型透视表,还真不知道,能给解释一下吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-9 22:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
洋务德雷 发表于 2023-3-9 20:37
什么是模型透视表,还真不知道,能给解释一下吗?

就是超级透视表,或者是power pivot做的透视表。

选中数据区域,插入数据透视表,最下面选择加载模型,就算模型透视表了。(也不用进入power pivot)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-30 02:15 , Processed in 0.042337 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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