Excel精英培训网

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

[已解决]写了一个VBA查询按钮,发现结果与预计不一致?

[复制链接]
发表于 2011-10-26 20:46 | 显示全部楼层 |阅读模式

支付余额明细表.rar (26.05 KB, 下载次数: 7)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-10-26 21:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 爱疯 于 2011-10-26 22:00 编辑

在网上搜了下:http://club.excelhome.net/thread-392243-1-1.html 9楼

JSSY版:在用Excel高级筛选时,一定要注意:如果以单元内容为筛选条件时,表示是模糊筛选;如果要精确筛选一定要在筛选条件内容前加“="号。


弄了半天,没想出怎么直接变成代码,最后建了2个辅助区(针对"预存内"和"预存外")。如果还有第3个、第4个 ....  这样的特例,依旧往下建辅助条件区。
最好等高手给你想更好办法,这样只为能用。
支付余额明细表3.rar (28.35 KB, 下载次数: 38)
回复

使用道具 举报

 楼主| 发表于 2011-10-26 22:29 | 显示全部楼层
回复 爱疯 的帖子

问题倒是能解决 ,不知道有没有更好更简单的方法
回复

使用道具 举报

发表于 2011-10-26 22:31 | 显示全部楼层
双飞叶 发表于 2011-10-26 22:29
回复 爱疯 的帖子

问题倒是能解决 ,不知道有没有更好更简单的方法

不急的话,先凑合用着。。。。等高手来给想好办法{:261:}
回复

使用道具 举报

 楼主| 发表于 2011-10-26 22:33 | 显示全部楼层
回复 爱疯 的帖子

恩~
另外感觉奇怪,
  1. JSSY版:在用Excel高级筛选时,一定要注意:如果以单元内容为筛选条件时,表示是模糊筛选;如果要精确筛选一定要在筛选条件内容前加“="号。
复制代码

既然是模糊筛选的原因,为什么日期这里不会出现错误,比如201109  201110不是很像么,但不会出现问题。


这里了谢谢你,提供了一个思路
回复

使用道具 举报

发表于 2011-10-26 22:38 | 显示全部楼层
201109是一个整体,201110是另一个整体。整体这样称呼不标准,但好理解吧。

它俩相互不存在,谁包含谁。而1楼问题中"预存内"和"预存内暂存",则存在("预存内"包含于"预存内暂存"中)
回复

使用道具 举报

 楼主| 发表于 2011-11-1 14:07 | 显示全部楼层
本帖最后由 双飞叶 于 2011-11-1 14:09 编辑
爱疯 发表于 2011-10-26 22:38
201109是一个整体,201110是另一个整体。整体这样称呼不标准,但好理解吧。

它俩相互不存在,谁包含谁。 ...


谢谢
这个内容也查了好多天了,感觉你的方法是最理想了~~~
你的辅助区,是不是照你的VBA代码
  1. Option Explicit

  2. Sub Macro1()
  3. Dim tj As Range '条件区域

  4. '选择对应的条件区域
  5. Select Case Range("g3")
  6. Case "预算内"
  7. [aa3] = [b3]
  8. [ac3] = [d3]
  9. [ad3] = [e3]
  10. [ae3] = [f3]
  11. [ag3] = [h3]
  12. Set tj = Range("aa2:ag3")
  13. Case "预算外"
  14. [aa6] = [b3]
  15. [ac6] = [d3]
  16. [ad6] = [e3]
  17. [ae6] = [f3]
  18. [ag6] = [h3]
  19. Set tj = Range("aa5:ag6")
  20. Case Else
  21. Set tj = Range("B2:H3")
  22. End Select

  23. '高级筛选
  24. Range("dd").AdvancedFilter Action:=xlFilterCopy, _
  25. CriteriaRange:=tj, _
  26. CopyToRange:=Range("A7:K65536"), _
  27. Unique:=False
  28. End Sub
复制代码
要是我要增加的外,是不是仿照下面
  1. 08.Case "预算内"

  2. 09.[aa3] = [b3]

  3. 10.[ac3] = [d3]

  4. 11.[ad3] = [e3]

  5. 12.[ae3] = [f3]

  6. 13.[ag3] = [h3]

  7. 14.Set tj = Range("aa2:ag3")

复制代码


    代码,在Case Else前面再加上一段就可以了~~~~

回复

使用道具 举报

 楼主| 发表于 2011-11-1 14:17 | 显示全部楼层
爱疯 发表于 2011-10-26 22:38
201109是一个整体,201110是另一个整体。整体这样称呼不标准,但好理解吧。

它俩相互不存在,谁包含谁。 ...

  1. '高级筛选
  2.     Range("dd").AdvancedFilter Action:=xlFilterCopy, _
  3.                                CriteriaRange:=tj, _
  4.                                CopyToRange:=Range("A7:K65536"), _
  5.                                Unique:=False
复制代码
筛选的代码还跟原来有所小小的变动
回复

使用道具 举报

发表于 2011-11-1 15:18 | 显示全部楼层
不知,类似“预算内”、“预算外”这样的情况,有多少?
回复

使用道具 举报

发表于 2011-11-1 16:06 | 显示全部楼层
支付余额明细表4 (自动保存的).rar (31.68 KB, 下载次数: 13)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:31 , Processed in 0.355414 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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