Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2549|回复: 5

[已解决]谢谢爱疯老师。按两个标准提取数据

[复制链接]
发表于 2011-7-19 12:02 | 显示全部楼层 |阅读模式
本帖最后由 lhj323323 于 2011-8-9 22:33 编辑

老师:
我在上传的附件中有详细的说明和需求。请看看,谢谢了。
关于按两个标准提取数据。


不好意思,刚才二楼的老师只是说了速度慢的问题,但并没有解决按两个条件进行提取数据的问题,所以在此再向朋友们求助。

最佳答案
2011-7-22 01:03
本帖最后由 爱疯 于 2011-7-22 09:08 编辑

  • 注释掉了全表字体和字号,如果必须,最好指定一个具体范围,不设置cells(所有单元格)。
  • 结果表的F2单元格,用技巧方式设置了数据有效性,以保证只允许在F2输入日期值。
  • 对季度判断,是希望这样吗?

提取4.rar (685.55 KB, 下载次数: 75)

提取2.rar

677.32 KB, 下载次数: 49

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-7-19 12:40 | 显示全部楼层
因为每写入一个单元格,都会触发一次 Worksheet_Change 事件。
你需要在开始写入前使用Application.EnableEvents = False关闭事件响应。
在写入完成后使用Application.EnableEvents = True启用事件响应。
回复

使用道具 举报

 楼主| 发表于 2011-7-19 21:12 | 显示全部楼层
回复 Zipall 的帖子

不好意思,刚才二楼的老师只是说了速度慢的问题,但并没有解决按两个条件进行提取数据的问题,所以在此再向朋友们求助。

回复

使用道具 举报

发表于 2011-7-19 23:01 | 显示全部楼层
回复 lhj323323 的帖子

日期的问题,用0-00-00代替yyyy-mm-dd应该可以.季度的问题,我看不明白你的计算规则,所以不知道怎么回答.





回复

使用道具 举报

发表于 2011-7-22 01:03 | 显示全部楼层    本楼为最佳答案   
本帖最后由 爱疯 于 2011-7-22 09:08 编辑

  • 注释掉了全表字体和字号,如果必须,最好指定一个具体范围,不设置cells(所有单元格)。
  • 结果表的F2单元格,用技巧方式设置了数据有效性,以保证只允许在F2输入日期值。
  • 对季度判断,是希望这样吗?

提取4.rar (685.55 KB, 下载次数: 75)
回复

使用道具 举报

 楼主| 发表于 2011-7-25 22:46 | 显示全部楼层
回复 爱疯 的帖子

注释掉了全表字体和字号,如果必须,最好指定一个具体范围,不设置cells(所有单元格)。 这个没有看懂是什么意思结果表的F2单元格,用技巧方式设置了数据有效性,以保证只允许在F2输入日期值。 对季度判断,是希望这样吗?是希望这样,
下面的语句大体能解决上述问题了。请爱疯老师看看,下面的语句有没有需要优化的?谢谢了
    t1 = [C21].Value
'一、从【数据源】中将涉及的数据提取出来导入到【结果表】,并去掉客户名称的引号
     With Sheet2 '【数据源】
         arr1 = .Range("a6:f" & .[b65536].End(3).Row).Value
         ReDim arr2(1 To UBound(arr1), 1 To 6)         
         For i = 1 To UBound(arr1) 'For i = 1 To Myr1等效
             If Mid(arr1(i, 2), 6, 4) = "某某网点名称" Then
                If Left(arr1(i, 6), 6) = t1 - 2 Or Left(arr1(i, 6), 6) = t1 - 1 Or Left(arr1(i, 6), 6) = t1 Then'提取一个季度的数据
                   k = k + 1
                   arr2(k, 1) = arr1(i, 1) '机构号
                   arr2(k, 2) = arr1(i, 3) '客户号
                   arr2(k, 3) = Mid(arr1(i, 4), 3, Len(arr1(i, 4)) - 4) '客户名称,去掉引号
                   arr2(k, 5) = arr1(i, 5) '开通的服务品种
                   arr2(k, 6) = Left(arr1(i, 6), 4) & "-" & Mid(arr1(i, 6), 5, 2) & "-" & Mid(arr1(i, 6), 7, 2) '修改日期格式             End If
             End If
         Next
      End With
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 19:40 , Processed in 0.402361 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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