ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 超级表的切片器-筛选区域动态引用

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-9-9 16:38 | 显示全部楼层 |阅读模式
本帖最后由 493861364 于 2022-9-9 17:49 编辑

研究上一个帖子,发现超级表添加切片器,然后筛选出的动态区域,问题是:不知道怎么直接关联到图表里(附件借助subtotal函数)

百度上,都是添加柱形图,折线图,然后添加切片器,就可以生成动态图表了,但复杂一点的图表,以上步骤实现不了
哪位老师指点一下,感谢赐教!
1、鼠标选切片器的某一个选项,能否返回一个对应的数值,比如index编号1,2,3之类的
2、切片器筛选出来的区域能否直接读取出来,而不是借助subtotal,间接才能获取
3、vba能否有什么属性得到筛选的结果区域
屏幕截图 2022-09-09 170709.jpg

图表应用动态区域.rar

14.44 KB, 下载次数: 12

TA的精华主题

TA的得分主题

发表于 2022-9-9 21:37 | 显示全部楼层
第3:
  1. Sheets(1).ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible)
复制代码

TA的精华主题

TA的得分主题

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

返回的是一个数组,感谢版主出手指点,研究一下怎么应用,
祝版主中秋快乐哈!

TA的精华主题

TA的得分主题

发表于 2022-9-9 22:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
493861364 发表于 2022-9-9 22:03
返回的是一个数组,感谢版主出手指点,研究一下怎么应用,
祝版主中秋快乐哈!

回祝!
返回的是 Range。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-9 22:28 | 显示全部楼层
wangg913 发表于 2022-9-9 22:06
回祝!
返回的是 Range。

对的,对的,多谢提醒哈

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-10 12:12 | 显示全部楼层

拓展了一下版主老师的代码,看起来的效果是单击切片器的选项,图表随着变动,对付能看
实在没找到切片器相关的事件,
直接指定宏后又无法单击选项
想了个曲线的解决办法,单击切片器选项-------公式变动------触发工作表重算-------触发代码-------更新图表
绕了一大圈
代码写的有点乱,有老师要是实在看不下去的话,帮忙优化一下,哈哈
有老师知道更简单触发的切片器选择事件的求指点!




Private Sub Worksheet_Calculate()
Dim rng, arr(1 To 4)

rng = Sheets(1).ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible)
v = "{"
For i = 1 To 4
v = v & rng(1, i + 3) & ";"
Next
v = Left(v, Len(v) - 1) & "}"
   
    ActiveSheet.ChartObjects("图表 3").Activate
    ActiveChart.FullSeriesCollection(1).Values = v
    ActiveChart.FullSeriesCollection(1).XValues = "=Sheet1!$D$1:$G$1"

End Sub



图表应用动态区域.rar

21.45 KB, 下载次数: 27

TA的精华主题

TA的得分主题

发表于 2022-9-10 21:17 | 显示全部楼层
493861364 发表于 2022-9-10 12:12
拓展了一下版主老师的代码,看起来的效果是单击切片器的选项,图表随着变动,对付能看
实在没找到切片器 ...

直接硬算。
  1. With Me.ChartObjects("图表 3").Chart
  2.     .FullSeriesCollection(1).Values = Me.ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible).Rows(1).Offset(, 3).Resize(1, 4)
  3.     .FullSeriesCollection(1).XValues = "=Sheet1!$D$1:$G$1"
  4. End With
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-11 09:51 来自手机 | 显示全部楼层
wangg913 发表于 2022-9-10 21:17
直接硬算。

硬核,厉害 我再试试能不能直接指定address

TA的精华主题

TA的得分主题

发表于 2022-9-13 11:06 | 显示全部楼层
  1. Dim o_slicer_item As Object
  2. Dim s_slicer_item As Object

  3. For Each o_slicer_item In ActiveWorkbook.SlicerCaches("切片器_月1").SlicerItems
  4.    ' If o_slicer_item.Selected = True Then MsgBox o_slicer_item.Name
  5.    If o_slicer_item.Selected = True Then Cells(1, 20) = o_slicer_item.Name
  6. Next

  7. For Each s_slicer_item In ActiveWorkbook.SlicerCaches("切片器_机构名称2").SlicerItems
  8.    ' If o_slicer_item.Selected = True Then MsgBox o_slicer_item.Name
  9.    If s_slicer_item.Selected = True Then Cells(2, 20) = s_slicer_item.Name
  10. Next
复制代码

这段能读出切片器的选择项

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-9-13 15:44 | 显示全部楼层
xiaojia8211 发表于 2022-9-13 11:06
这段能读出切片器的选择项

万分感谢,找到钥匙了
这下就自行可以搜索相关的代码了,感谢不吝赐教!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-5 14:45 , Processed in 0.035983 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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