Excel精英培训网

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

[已解决]根据分值范围设定筛选数据(窗体)

[复制链接]
发表于 2012-12-26 19:15 | 显示全部楼层 |阅读模式
根据数值范围筛选数据(窗体).rar (19.07 KB, 下载次数: 67)
发表于 2012-12-26 21:57 | 显示全部楼层
回复

使用道具 举报

发表于 2012-12-26 22:05 | 显示全部楼层
回复

使用道具 举报

发表于 2012-12-26 22:17 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()
  2.     Dim min%, max%, cj%
  3.     If Len(TextBox1.Text) = 0 Or Len(TextBox2.Text) = 0 Then
  4.         MsgBox "请输入最小值和最大值"
  5.         Exit Sub
  6.     End If
  7.     If Not (IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text)) Then
  8.         MsgBox "请输入数值"
  9.         Exit Sub
  10.     End If
  11.     min = Val(TextBox1.Text)
  12.     max = Val(TextBox2.Text)
  13.     If min > max Then MsgBox "最小值不能大于最大值": Exit Sub

  14.     With ListView1
  15.         For i = .ListItems.Count To 1 Step -1
  16.             cj = Val(.ListItems(i).SubItems(4))
  17.             If Not (cj >= min And cj <= max) Then
  18.                 .ListItems.Remove (i)
  19.             End If
  20.         Next
  21.     End With
  22. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-26 22:21 | 显示全部楼层
5-15 分的结果是空的,直接一句  ListView1.ListItems.Clear 就可以了

你前面的数据都全写入到 listview  了,后面要处理的,在对应位置添加一个判断就可以了嘛!!

  1. Private Sub CommandButton1_Click()
  2.   ListView1.ListItems.Clear
  3.     With Sheet3
  4.         X = .Range("b65536").End(xlUp).Row
  5.         arrData = .Range("a2:e" & X)
  6.     End With
  7.     For i = 1 To UBound(arrData)
  8.       If arrData(i, 5) >= Val(Me.TextBox1.Text) And arrData(i, 5) <= Val(Me.TextBox2.Text) Then   '添加的判断
  9.         With ListView1.ListItems.Add(, , arrData(i, 1))
  10.               For Y = 2 To UBound(arrData, 2)
  11.                   .SubItems(Y - 1) = arrData(i, Y)
  12.               Next Y
  13.         End With
  14.       End If    '判断 结束对应 end if
  15.     Next i
  16. End Sub
复制代码
回复

使用道具 举报

发表于 2012-12-26 22:50 | 显示全部楼层
  1. Private Sub ComboBox1_Change()
  2.     If ComboBox1 = "" Then
  3.         TextBox1 = ""
  4.         TextBox2 = ""
  5.     End If
  6.     Dim i As Integer, X As Integer, Y As Integer
  7.     Dim dsD As Object
  8.     ListView1.ListItems.Clear
  9.     With Sheet3
  10.         X = .Range("a65536").End(xlUp).Row
  11.         arrData = .Range("a2:e" & X)
  12.     End With
  13.     For i = 1 To UBound(arrData)
  14.         If arrData(i, 1) Like "*" & ComboBox1.Value Then
  15.             With ListView1.ListItems.Add(, , arrData(i, 1))
  16.                 For Y = 2 To UBound(arrData, 2)
  17.                     .SubItems(Y - 1) = arrData(i, Y)
  18.                 Next Y
  19.             End With
  20.         End If
  21.     Next i
  22.     Dim min%, max%, cj%
  23.     If Len(TextBox1.Text) = 0 Or Len(TextBox2.Text) = 0 Then Exit Sub
  24.     If Not (IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text)) Then Exit Sub
  25.     min = Val(TextBox1.Text)
  26.     max = Val(TextBox2.Text)
  27.     If min > max Then Exit Sub
  28.     Call ListFilter(min, max)
  29. End Sub

  30. Private Sub ListFilter(ByVal min As Integer, ByVal max As Integer)
  31.     Dim cj%, i&
  32.     With ListView1
  33.         For i = .ListItems.Count To 1 Step -1
  34.             cj = Val(.ListItems(i).SubItems(4))
  35.             If Not (cj >= min And cj <= max) Then
  36.                 .ListItems.Remove (i)
  37.             End If
  38.         Next
  39.     End With
  40. End Sub
  41. Private Sub CommandButton1_Click()
  42.     Dim min%, max%, cj%
  43.     If Len(TextBox1.Text) = 0 Or Len(TextBox2.Text) = 0 Then
  44.         MsgBox "请输入最小值和最大值"
  45.         Exit Sub
  46.     End If
  47.     If Not (IsNumeric(TextBox1.Text) And IsNumeric(TextBox2.Text)) Then
  48.         MsgBox "请输入数值"
  49.         Exit Sub
  50.     End If
  51.     min = Val(TextBox1.Text)
  52.     max = Val(TextBox2.Text)
  53.     If min > max Then MsgBox "最小值不能大于最大值": Exit Sub
  54.     Call ListFilter(min, max)
  55. End Sub
复制代码
增加自动筛选功能。
其实在添加进LISTVIEW的时候就可以做判断。
回复

使用道具 举报

 楼主| 发表于 2012-12-26 23:21 | 显示全部楼层
hwc2ycy 发表于 2012-12-26 22:17

谢谢hwc2ycy师。是否可以增加一个判断,当设定的起止号不在ListView1窗体中时,给予提示。
回复

使用道具 举报

发表于 2012-12-26 23:27 | 显示全部楼层
c888 发表于 2012-12-26 23:21
谢谢hwc2ycy师。是否可以增加一个判断,当设定的起止号不在ListView1窗体中时,给予提示。

你自己试着改下,有问题我再帮你。
回复

使用道具 举报

 楼主| 发表于 2012-12-27 00:03 | 显示全部楼层
hwc2ycy 发表于 2012-12-26 23:27
你自己试着改下,有问题我再帮你。

刚才试写了下,都不是很满意。只好再麻烦您好老了,谢谢指点!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 14:12 , Processed in 0.292354 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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