ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 新人请教:用VBA如何提取透视表筛选过后的数据?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-11-30 21:14 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 shelld 于 2021-12-1 11:28 编辑

问题描述:

1、我建立了一个销售报表查询的窗体,如图1所示,点击【总流水账目】按钮时,sheets("销售总表")里显示的是全部数据,窗体里读取的也是全部数据。

图1

图1


2、当我点击【本月流水账目】按钮时,如图2所示,sheets("销售总表")里显示的是筛选过后的本月数据,但是窗体里的数据没有任何变化,还是全部数据。

图2

图2


3、代码如下:
  1. Private Sub CommandButton2_Click()
  2.     Dim Start, Final
  3.     Start = CDate(Evaluate("EOMONTH(TODAY(),-1)"))
  4.     Final = CDate(Evaluate("EOMONTH(TODAY(),0)"))
  5.     Worksheets("销售总表").Range("$A$1:$G$1").AutoFilter Field:=1, Operator:=xlFilterValues, Criteria1:=">" & Start, Operator:=xlAnd, Criteria2:="<=" & Final
  6.     Me.MultiPage1.Value = 1
  7. End Sub
  8. Private Sub MultiPage1_Change()
  9.     ListBox1.ColumnCount = 7
  10.     ListBox1.ColumnWidths = "60,60,180,60,60,60,60"
  11.     ListBox1.List = Worksheets("销售总表").Range("a2:g" & Worksheets("销售总表").Range("a65536").End(xlUp).Row).Value
  12.     Label1.Caption = Application.WorksheetFunction.Sum(Worksheets("销售总表").Range("f2:f65536"))
  13.     ListBox2.ColumnCount = 7
  14.     ListBox2.ColumnWidths = "60,60,180,60,60,60,60"
  15.     ListBox2.List = Worksheets("销售总表").Range("a2:g" & Worksheets("销售总表").Range("g65536").End(xlUp).Row).Value
  16.     Label2.Caption = Application.WorksheetFunction.Sum(Worksheets("销售总表").Range("f2:f65536"))
  17. End Sub
  18. Private Sub Userform_Initialize()
  19.     ListBox1.ColumnCount = 7
  20.     ListBox1.ColumnWidths = "60,60,180,60,60,60,60"
  21.     ListBox1.List = Worksheets("销售总表").Range("a2:g" & Worksheets("销售总表").Range("a65536").End(xlUp).Row).Value
  22.     Label1.Caption = Application.WorksheetFunction.Sum(Worksheets("销售总表").Range("f2:f65536"))
  23. End Sub
复制代码

4、求助:如何才能把筛选过后的数据,读取到窗体中?我思考了一下整个逻辑,是这样的,因为透视表筛选,实际上只是把不想看到的行,给隐藏起来了,而我的listbox获取的数据却仍然是包括隐藏行的全部数据,那么能不能建立一个字典,先读取“销售总表”中所有数据,然后根据隐藏与否的条件筛选,最后把没有隐藏的行数据,复制到一个新表中,最后,窗体执行【本月流水账目】按钮时,读取的是新建表中筛选后的数据。但是,愚笨的我,不知道如何实现这个代码,还请各位前辈高人,出手帮助,感谢:)
5、代码附件在此:

刚接触VBA的小萌新,在请求各位前辈的指点,万分感谢:)



销售.xlsm.zip

64.83 KB, 下载次数: 4

附件

TA的精华主题

TA的得分主题

发表于 2021-12-4 02:20 | 显示全部楼层
要不试一下直接从数据源中判断日期是否为当月,再提取数据?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 14:41 , Processed in 0.037566 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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