Excel精英培训网

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

[已解决]VBA按单位和年龄查询名单

[复制链接]
发表于 2016-7-6 10:22 | 显示全部楼层 |阅读模式
本帖最后由 龙送农 于 2016-7-6 11:28 编辑

VBA调名单:
1、条件1是单元格F2(单位),条件2是男性年龄大于或等于60岁女性年龄大于或等于55岁,从《数据库》调出本表相应名单信息。

2、当条件1是单元格F2(单位)选择显示“全部”时,条件2是男性年龄大于或等于60岁女性年龄大于或等于55岁,从《数据库》调出所有单位本表相应名单信息。

最佳答案
2016-7-6 10:57
  1. Sub tj()
  2.     arr = Sheets(1).[a1].CurrentRegion
  3.     dw = [f2]  '单位
  4.     dzb = Array(3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, 37, 38, 59)
  5.     For i = 5 To UBound(arr)
  6.         If dw = "全部" Or dw = arr(i, 4) Then
  7.             txnl = IIf(arr(i, 9) = "男", 60, 55) '退休年龄
  8.             If arr(i, 15) >= txnl Then
  9.                 n = n + 1: arr(n, 1) = n
  10.                 For j = 0 To UBound(dzb)
  11.                     arr(n, j + 2) = arr(i, dzb(j))
  12.                 Next
  13.             End If
  14.         End If
  15.     Next
  16.     [a5:ag1000] = ""
  17.     If n > 0 Then [a5].Resize(n, UBound(dzb) + 2) = arr
  18. End Sub

  19. Private Sub Worksheet_Change(ByVal Target As Range)
  20.     If Target.Address = "$F$2" Then Call tj
  21. End Sub
复制代码

VBA按单位和年龄查询名单.rar

10.54 KB, 下载次数: 3

发表于 2016-7-6 10:57 | 显示全部楼层    本楼为最佳答案   
  1. Sub tj()
  2.     arr = Sheets(1).[a1].CurrentRegion
  3.     dw = [f2]  '单位
  4.     dzb = Array(3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, 37, 38, 59)
  5.     For i = 5 To UBound(arr)
  6.         If dw = "全部" Or dw = arr(i, 4) Then
  7.             txnl = IIf(arr(i, 9) = "男", 60, 55) '退休年龄
  8.             If arr(i, 15) >= txnl Then
  9.                 n = n + 1: arr(n, 1) = n
  10.                 For j = 0 To UBound(dzb)
  11.                     arr(n, j + 2) = arr(i, dzb(j))
  12.                 Next
  13.             End If
  14.         End If
  15.     Next
  16.     [a5:ag1000] = ""
  17.     If n > 0 Then [a5].Resize(n, UBound(dzb) + 2) = arr
  18. End Sub

  19. Private Sub Worksheet_Change(ByVal Target As Range)
  20.     If Target.Address = "$F$2" Then Call tj
  21. End Sub
复制代码

VBA按单位和年龄查询名单.rar

14.62 KB, 下载次数: 12

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 03:39 , Processed in 0.538229 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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