ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 有条件提取数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-7-24 16:46 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
示例中是按A&B两列做为关键字合并汇总提取各表数据,现能否按A?和B有条件提取各表数据:A&B(如选B列部门中的嘉和园店化妆品,就B列中只选一个部门)?请老师们帮忙!见附件!

合并计算.zip

261.66 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2019-7-24 20:39 | 显示全部楼层
最头疼的是按照别人的思路,去理解别人的程序。
能不能交给原来编程序的去修改?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-25 08:36 | 显示全部楼层
dgerwin 发表于 2019-7-24 20:39
最头疼的是按照别人的思路,去理解别人的程序。
能不能交给原来编程序的去修改?

原来汇总合并的数据结果不正确,我参照网上的例子修改好了。只是突发奇想,能不能做到我要求的那样!自己试了好多次也没有成功,刚学代码不久,遇到这种问题不知从何着手,如老师愿意,可按你自己的思路帮我重写一下代码,不胜感激!

TA的精华主题

TA的得分主题

发表于 2019-7-26 13:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 liangmutou01 于 2019-7-26 13:28 编辑

见代码:
Sub hz()
  If IsEmpty([q1]) And IsEmpty([r1]) Or Not IsEmpty([q1]) And Not IsEmpty([r1]) Then
    MsgBox "q1和r1单元格既不能同时为空,也不能同时有内容。q1为商品;r1为部门,更正后重试。"
    Exit Sub
  End If
  Set conn = CreateObject("ADODB.Connection")

  Range("a2:p65536").ClearContents
  If IsEmpty([q1]) Then
    bm = [r1]: bs = "b": [b2] = [r1]
  Else
    bm = [q1]: bs = "s": [a2] = [q1]
  End If
  lj = ThisWorkbook.Path & "\"
  wjm = Dir(ThisWorkbook.Path & "\*.xls")
  Do While Len(wjm) > 0
    If ThisWorkbook.FullName <> lj & wjm Then
      conn.Open "provider=microsoft.ace.oledb.12.0;extended properties='excel 12.0;HDR=yes';data source='" & lj & wjm & "'"
      For lie = 4 To Cells(1, Columns.Count).End(xlToRight).Column
        If Cells(1, lie) = Left(wjm, Len(wjm) - 4) Then Exit For
      Next lie
      If bs = "b" Then
        Cells(2, lie).CopyFromRecordset conn.Execute("select sum(记帐销售金额) from [Sheet1$] where 部门='" & bm & "' group by 部门;")
      Else
        Cells(2, lie).CopyFromRecordset conn.Execute("select sum(记帐销售金额) from [Sheet1$] where 商标名称='" & bm & "' group by 商标名称;")
      End If
    End If
    wjm = Dir
    If conn.State = 1 Then conn.Close
  Loop
  Range("c2").Formula = "=sum(d2:p2)"
  set conn=nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2019-7-26 13:31 | 显示全部楼层
把原文件一并发给你。

合并计算.zip

199.84 KB, 下载次数: 11

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-29 08:51 | 显示全部楼层
liangmutou01 发表于 2019-7-26 13:31
把原文件一并发给你。

老师辛勤了,非常感谢!你的代码是一个很好的思路,可以选择字段中的类别求和!我的本意是,选择字段中的类,然后列出该类明细,比如选择部门中的“嘉和园店化妆品”,在汇总表中列出“嘉和园店化妆品”下“商品名称”的明细再汇总!两次表示感谢!

TA的精华主题

TA的得分主题

发表于 2019-7-29 09:31 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-7-30 15:01 | 显示全部楼层
只改了部门汇总,有清单,未对统计数据进行逐一核对。

合并计算.zip

220.61 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-7-31 08:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liangmutou01 发表于 2019-7-30 15:01
只改了部门汇总,有清单,未对统计数据进行逐一核对。

谢谢老师的答复,辛苦了,是我想要得到的格式!万分感谢!早上验证了一下,各横行合计数和纵行的合计列数据是对的,但纵行各个月份的数据对不上。如9月份,嘉和园店化妆品9月份表中合计数为462053.28,汇总表中运行程序后则为577946.37。嘉和园店化妆品9月份表中明细数据有些增加,有些减少:如紫金花应为7603.64,汇总表中运行程序后则为20014.67,值增加了12411.03;又如奥斯曼应为350.08,汇总表中运行程序后则为301.44,减少了48.64;又如ABC应为3913.17,汇总表中运行程序后则为4487.29,增加了574.12。老师如有空帮我再看看!

TA的精华主题

TA的得分主题

发表于 2019-7-31 13:55 | 显示全部楼层
[img]file:///C:/Users/liang/AppData/Roaming/Tencent/Users/22972251/QQ/WinTemp/RichOle/6[ZXA0QQ~%25Q2%60M2[EZZA$82.png[/img]
你检查一下你的数据,在我机子上9月的数据都是对的。
QQ图片20190731135323.png
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 04:18 , Processed in 0.043743 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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