Excel精英培训网

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

[已解决]求大侠帮忙写一个按要求查找统计数量的代码

[复制链接]
发表于 2013-11-11 14:18 | 显示全部楼层 |阅读模式
求大侠帮忙写一个按要求查找统计数量的代码,在此先谢谢了!!!
最佳答案
2013-11-11 16:32
求按要求查找并统计数量代码.rar (63.21 KB, 下载次数: 18)

求按要求查找并统计数量代码.zip

50.02 KB, 下载次数: 15

发表于 2013-11-11 16:31 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-11-11 16:37 编辑
  1. Private Sub CommandButton1_Click()
  2.     If Not CheckTextbox(Me.TextBox1) Then Exit Sub
  3.     If Not CheckTextbox(Me.TextBox2) Then Exit Sub
  4.     If Not CheckTextbox(Me.TextBox3) Then Exit Sub
  5.     Call range2Listbox(Me.TextBox1.Text & "#" & Me.TextBox2.Text & "#" & Me.TextBox3.Text)
  6. End Sub

  7. Function CheckTextbox(txt As MSForms.TextBox) As Boolean
  8.     If Len(txt.Text) = 0 Then
  9.         MsgBox "字段未填完整"
  10.         txt.SetFocus
  11.         Exit Function
  12.     End If
  13.     CheckTextbox = True
  14. End Function

  15. Private Sub range2Listbox(strCondition As String)
  16.     With Me.ListBox1
  17.         .Clear
  18.         .ColumnCount = 5
  19.     End With

  20.     Dim arr, strTest, i As Long, lSum As Long
  21.     Dim result(), lRecordcount As Long

  22.     ReDim result(1 To 5, 0 To 0)
  23.     result(1, 0) = "区域"
  24.     result(2, 0) = "姓名"
  25.     result(3, 0) = "属性"
  26.     result(4, 0) = "类别"
  27.     result(5, 0) = "数量"

  28.     arr = Sheet1.Range("a1").CurrentRegion.Value
  29.     For i = LBound(arr) + 1 To UBound(arr)
  30.         strTest = arr(i, 3) & "#" & arr(i, 7) & "#" & arr(i, 6)
  31.         If strTest = strCondition Then
  32.             lSum = arr(i, 9) + lSum
  33.             lRecordcount = lRecordcount + 1
  34.             ReDim Preserve result(1 To 5, 0 To lRecordcount)
  35.             result(1, lRecordcount) = arr(i, 3)
  36.             result(2, lRecordcount) = arr(i, 4)
  37.             result(3, lRecordcount) = arr(i, 6)
  38.             result(4, lRecordcount) = arr(i, 7)
  39.             result(5, lRecordcount) = arr(i, 9)
  40.         End If
  41.     Next
  42.     If lRecordcount Then
  43.         Me.ListBox1.Column = result
  44.         Me.TextBox4.Text = lSum
  45.     Else
  46.         MsgBox "条件有误,没有查找到合适的数据"
  47.     End If
  48. End Sub
复制代码
动态数组做的,没考虑效率之类的。
回复

使用道具 举报

发表于 2013-11-11 16:32 | 显示全部楼层    本楼为最佳答案   
求按要求查找并统计数量代码.rar (63.21 KB, 下载次数: 18)
回复

使用道具 举报

 楼主| 发表于 2013-11-11 16:42 | 显示全部楼层
hwc2ycy 发表于 2013-11-11 16:32

谢谢大侠了
回复

使用道具 举报

发表于 2013-11-11 17:57 | 显示全部楼层
tuibian_htf 发表于 2013-11-11 16:42
谢谢大侠了

其实用ADO也是不错的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:04 , Processed in 0.315923 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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