|
如一楼所示附件,有一源文件数据,现在想实现单击按钮1,打开一个.xls文件,然后提取指定列标的数字,包含行的数据,放入
打开文件并筛选出值.xlsm的Sheet2。
算法步骤包括:
1,打开一个.xls文件
2,输入筛选列标和筛选值
3.搜索列标所在的列
4,在该列进行筛选出值
5,将值返还程序所在文件指定位置。
源文件如下:
比赛项目 运动员编号 成绩
排球 2021 55
排球 2022 77
排球 2023 33
排球 2024 11
排球 2025 18
排球 2026 37
排球 2027 89
排球 2028 72
排球 2029 59.60714286
羽毛球 2021 61.96428571
羽毛球 2022 64.32142857
羽毛球 2023 66.67857143
羽毛球 2024 69.03571429
羽毛球 2025 71.39285714
网球 2021 73.75
网球 2022 76.10714286
网球 2023 78.46428571
网球 2024 80.82142857
网球 2025 83.17857143
筛选结果如下:(筛选方式为列标为运动员编号,值为2021)
比赛项目 运动员编号 成绩
排球 2021 55
羽毛球 2021 61.96428571
网球 2021 73.75
不知道程序哪里错了,得不到结果,求助
- Sub Macro1()
- Dim arr, brr, i&, s&, bh, j%
- ReDim brr(1 To 2000, 1 To 3)
- Application.ScreenUpdating = False
- [a2:c2000] = ""
- With GetObject(ThisWorkbook.Path & "\源文件.xls")
- arr = .Sheets(1).Range("a1").CurrentRegion
- .Close 0
- End With
- bh = Application.InputBox("请输入运动员编号")
- For i = 2 To UBound(arr)
- If Left(arr(i, 2), 4) = bh Then
- s = s + 1
- For j = 1 To UBound(arr, 2)
- brr(s, j) = arr(i, j)
- Next
- End If
- Next
- If s > 0 Then Range("a2").Resize(s, 3) = brr
- Application.ScreenUpdating = True
- End Sub
复制代码
|
|