ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA创建多重区域数据源透视表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-9-11 10:03 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:工作表和工作簿
向各位高手求教,感谢先!

在用VBA创建透视表的时候,理论上可以在类型中选择xlConsolidation——多重区域数据源。可是我在调试的时候,创建透视表的那一行语句过不去,提示“类型不匹配”。请问是为什么呢?——我的理解错了么?

代码如下:
Sub createpivottable()
    Dim mypt As PivotTable
    Dim datarange1 As Range, datarange2 As Range, myrange As Range
    Dim datarange
    Dim i As Integer
   
   
    With Sheets(3)
   
        Set myrange = .Cells(3, 3)
   
        Set datarange1 = Sheets(1).UsedRange
        Set datarange2 = Sheets(2).UsedRange
   
        datarange = Array(datarange1, datarange2)
        
       .PivotTableWizard xlConsolidation, datarange , myrange, "mypt"    '该行提示错误 13,类型不匹配
   
   
    End With
End Sub

[ 本帖最后由 liuhuo 于 2010-9-11 10:07 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-11 10:16 | 显示全部楼层

数据源

补充一个疑问:

用vba建透视表,选择多重区域数据源时,对这多个区域有什么要求呢?比如说列数是否要求一样多?是否要求存在标题行?是否要求列顺序一样?

——自己找了不少资料都没有这些问题的详细说明,程序也调不过去,疑惑中。。。
感谢高手指点!!!

TA的精华主题

TA的得分主题

发表于 2010-9-11 11:39 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-11 12:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢帮助!
录制宏的时候不能选择多重区域啊~

从书上看说使用pivotTableWizard的方法可以建立多重数据源,大家成功用过这个方法么?——有更好的方法?

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-11 14:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
沉得也太快了,自己都找不到了~~~~~~~~~

大侠们指点一下啊!!

TA的精华主题

TA的得分主题

发表于 2010-9-11 19:56 | 显示全部楼层
可以使用多重数据区域,请使用下面的代码
  1. Sub createpivottable()
  2.     ' Created by taller@ExcelHome
  3.     Dim myrange As Range
  4.     Dim datarange() As String
  5.     Dim i As Integer
  6.     With Sheets(3)
  7.         Set myrange = .Cells(3, 3)
  8.         ReDim datarange(1)
  9.         For i = 1 To 2
  10.             With Sheets(i)
  11.                 datarange(i - 1) = .Name & "!" & .UsedRange.Address(, , xlR1C1)
  12.             End With
  13.         Next
  14.         .PivotTableWizard xlConsolidation, datarange, myrange, "mypt"
  15.     End With
  16. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-11 21:49 | 显示全部楼层
太感动了!!不愧是高手啊!!!佩服+感激~~~

能不能这么理解?
pivottablewizard的第二个参数,应该是一个字符串数组,数组的每个元素记录的是区域的地址。而不能够直接放一个区域数组在上面。

经过一番尝试,多个区域之间的统计关系也弄明白了——收获太大了!!!!感动ing

感谢taller版主!!!!!!!!!!!!!!!!!

TA的精华主题

TA的得分主题

发表于 2010-9-13 09:38 | 显示全部楼层

回复 7楼 liuhuo 的帖子

帮助中有清楚的描述

  1. SourceData 可选 Variant 新报表的数据。它可以是一个 Range 对象、一个区域数组或是代表其他报表名称的一个文本常量。对于外部数据库而言,SourceData 是一个包含 SQL 查询字符串的字符串数组,其中的每个元素最长为 255 个字符。您应该使用 Connection 参数指定 ODBC 连接字符串。为了能与旧版本的 Excel 兼容,SourceData 可以是一个二元数组。第一个元素是用于指定数据的 ODBC 源的连接字符串,第二个元素是用于获取数据的 SQL 查询字符串。如果指定 SourceData,则必须同时指定 SourceType。如果活动单元格位于 SourceData 区域内,则必须同时指定 TableDestination
复制代码

TA的精华主题

TA的得分主题

发表于 2013-1-30 21:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我如果有几十个表,可以用吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 21:36 , Processed in 0.043369 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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