|
发表于 2014-3-4 12:09
|
显示全部楼层
本楼为最佳答案
likeblue 发表于 2014-3-4 11:53
能否来些注释,我不是想直接用,我是想学。
- Sub test()
-
- Dim arr(), i&, j%, k%, re(), cnt&, rq
- 'Sheet1的A4单元格数据区域赋值给数组arr
- arr = Sheets("Sheet1").Range("A4").CurrentRegion.Value
- '定义re数组的区域为 arr上标*6(考虑最多的可能是全部日期全部对上的可能)
- ReDim re(1 To UBound(arr) * 6, 1 To 1)
- '将sheet2的B3单元格值赋给rq变量,避免反复读取单元格的值
- rq = Sheets("sheet2").[b3].Value
- '从数组第一行开始循环
- For i = 1 To UBound(arr)
- '检查数组的第一列和第二列是否和rq一致
- For j = 1 To 2
-
- If arr(i, j) = rq Then
- '如果一致则将后三列中非空单元格放入数组re,同时计数变量递增1
- For k = 3 To 5
-
- If arr(i, k) <> "" Then
-
- cnt = cnt + 1
-
- re(cnt, 1) = arr(i, k)
-
- End If
-
- Next
-
- End If
-
- Next
-
- Next
-
- Dim rng As Range
-
- Set rng = Sheets("sheet2").[b6]
- '列标题
- rng = "类别"
- '将数组填入单元格区域
- rng.Offset(1, 0).Resize(cnt, 1) = re
-
- End Sub
复制代码 |
|