- Sub 查询()
- Dim arr, brr, i%, j&, k%
- [A:F].Clear '清除上次的查询结果
- ReDim brr(1 To 20000, 1 To 6)
- 姓名 = Application.InputBox("您想查找谁的成绩?可以输入一个或者多字", "查找目标", , , , , , 2) '在输入框中指定查找目标
- If 姓名 = "False" Then Exit Sub '如果用户按下了取消键,那么结束过程
- Tim = Timer '初始化时间变量
- For i = 1 To Sheets.Count - 1 '遍历所有工作表(当前存放结果的工作表即除外)
- arr = Sheets(i).Range("a1").CurrentRegion
- For j = 2 To UBound(arr)
- If arr(j, 1) Like "*" & 姓名 & "*" Then
- s = s + 1
- brr(s, 1) = Sheets(i).Name
- brr(s, 2) = Cells(j, 1).Address(0, 0)
- For k = 1 To 4
- brr(s, k + 2) = arr(j, k)
- Next
- End If
- Next
- Next
- If s Then
- [a1:f1] = Array("工作表", "地址", "姓名", "班级", "学号", "成绩")
- Range("a2").Resize(s, 6) = brr
- End If
- MsgBox Format(Timer - Tim, "0.00秒") '提示搜索时间(仅用于测试,实际工作中可以不要这句代码)
- End Sub
复制代码 |