Excel精英培训网

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

[已解决]从工作簿中查询取数

[复制链接]
发表于 2014-4-25 09:56 | 显示全部楼层 |阅读模式
查询取数.rar (67.64 KB, 下载次数: 16)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-4-25 14:49 | 显示全部楼层    本楼为最佳答案   
  1. Dim arr, brr, d
  2. Private Sub CommandButton1_Click()   '查询
  3.     Set d1 = CreateObject("scripting.dictionary")
  4.     dbd = Me.ComboBox1   '代表队
  5.     With Sheet1
  6.         .[a2] = dbd
  7.         .Range("b3:b5,d3:d5,f3:f5,a7:f1000") = ""
  8.         For i = 2 To UBound(brr)
  9.             If dbd = Trim(brr(i, 2)) Then
  10.                 ld = Trim(brr(i, 3))
  11.                 jl = Trim(brr(i, 5))
  12.                 .[b3] = ld: .[b4] = jl    '领队、教练
  13.                 .[d3] = brr(i, 4): .[d4] = brr(i, 6)   '电话
  14.                 If Len(ld) > 0 Then .[f3] = UBound(Split(ld, " ")) + 1
  15.                 If Len(jl) > 0 Then .[f4] = UBound(Split(jl, " ")) + 1 '人数
  16.                 .[b5] = brr(i, 7)
  17.             End If
  18.         Next
  19.                
  20.         ReDim crr(1 To 1000, 1 To 6)
  21.         For i = 2 To UBound(arr)
  22.             If dbd = Trim(arr(i, 4)) Then
  23.                 male = Trim(arr(i, 2)): female = Trim(arr(i, 3))
  24.                 x = male & " " & female  '男+女,计算总人数用
  25.                 n = n + 1
  26.                 crr(n, 1) = n   '序号
  27.                 crr(n, 2) = male: crr(n, 3) = female
  28.                 crr(n, 4) = arr(i, 5)
  29.                 xm = Trim(arr(i, 6)) & "," & Trim(arr(i, 7))  '项目
  30.                 If Right(xm, 1) = "," Then xm = Left(xm, Len(xm) - 1)
  31.                 crr(n, 5) = xm
  32.                 xrr = Split(x, " ")   '计算总人数
  33.                 For j = 0 To UBound(xrr)
  34.                     xkey = Trim(xrr(j))
  35.                     If Len(xkey) > 0 Then d1(xkey) = ""
  36.                 Next
  37.             End If
  38.         Next
  39.         .[f5] = d1.Count   '选手人数
  40.         .[a7].Resize(n, 6) = crr
  41.     End With
  42. End Sub

  43. Private Sub CommandButton2_Click()   '退出
  44.     Unload Me
  45. End Sub

  46. Private Sub UserForm_Initialize()   '初始化
  47.     Set wb = Workbooks.Open(ThisWorkbook.Path & "\比赛文件.xls")
  48.     Set d = CreateObject("scripting.dictionary")
  49.     arr = wb.Sheets(1).[a1].CurrentRegion
  50.     brr = wb.Sheets(2).[a1].CurrentRegion
  51.     wb.Close False
  52.     For i = 2 To UBound(arr)
  53.         xkey = Trim(arr(i, 4))
  54.         d(xkey) = d(xkey) + 1
  55.     Next
  56.     Me.ComboBox1.List = Application.Transpose(d.keys)
  57. End Sub
复制代码
回复

使用道具 举报

发表于 2014-4-25 14:51 | 显示全部楼层
请看附件。

查询取数.rar

74.59 KB, 下载次数: 22

回复

使用道具 举报

发表于 2014-4-25 15:02 | 显示全部楼层
代码29、30把 "," 改成 "/"
xm = Trim(arr(i, 6)) & "/" & Trim(arr(i, 7))  '项目

If Right(xm, 1) = "/" Then xm = Left(xm, Len(xm) - 1)

回复

使用道具 举报

 楼主| 发表于 2014-4-25 15:47 | 显示全部楼层
感谢楼上的朋友的帮忙,您所做的正是我想要的结果!谢谢了!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 11:16 , Processed in 0.360892 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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