|
- Sub d()
- Dim arr(), brr()
- arr = Sheet2.Range("a1").CurrentRegion '定义 原始数据表 的整个区域为数组
- Sheet3.Cells.ClearContents '清空 结果表 的所有数据
- For c = 2 To UBound(arr, 2) '外循环是数组的最大列数,也就是 原始数据表 的最大列数J列(10列)
- For r = 4 To UBound(arr) '内循环是数组的行数,也就是 原始数据表 的最大行数(目前是8行,以后有多少行就是多少)
- If arr(r, c) = "Y" Then '如果数组的值等于"Y"
- j = j + 1 '开始计数
- ReDim Preserve brr(1 To 2, 1 To j) '定义二维动态数组,目的是为了把结果装进去
- brr(1, j) = arr(r, 1) '结果数组的第一行第J列就是 原始数据表数组的A列数据
- brr(2, j) = arr(3, c) '结果数组的第二行第J列就是 原始数据表数组的第3行数据
- End If
- Next
- Next
- Sheet3.Range("A3").Resize(j, 2) = WorksheetFunction.Transpose(brr) '将结果数组赋值给 结果表的区域,因为动态数组只能动态增加列,所以必须用Transpose转置,Transpose函数为VBA调用工作表函数
- Sheet3.Range("A3").Sort Sheet3.Range("A2"), xlAscending, , , , , , xlNo '按照结果表的A列进行升序排序
- End Sub
复制代码 |
|