|
大家好,哪位大神帮我修改一下VBA,谢谢
本帖最后由 FnG 于 2014-5-13 02:40 编辑
- Sub test()
- Dim Arr, Arr2() '这两行定义变量
- Dim R%, Col As Byte, LR%, LC%, i%, j%
- On Error Resume Next '防错代码
- Arr = Range("b3:k" & [b65536].End(3).Row).Value '赋值数组Arr的范围为B:K列的范围
- LR = UBound(Arr) '计算结果有多少列
- LC = Int((LR - 1) / 100) + 1 '计算结果有多少列
- ReDim Arr2(1 To 1000, 1 To LC) '定义Arr2为要输出结果的数组
- 'For …… Next都是循环语句,四个循环先后顺序是:结果数组Arr2先列循环,再行循环(0001~1000取后三位)写入结果数据,每个数据都要循环一遍B:K的100行10列
- '在一行的10列里如果出现空就跳出列循环,如果B:K出现了当前数据中有的数就数组结果计数+1,同样跳出循环(这个必须跳,不然有可能重复计数)
- For i = 1 To LC
- For j = 1 To 1000
- For R = (i - 1) * 100 + 1 To Application.Min(i * 100, LR)
- For Col = 1 To 10
- If Arr(R, Col) = "" Then
- Exit For
- ElseIf InStr(Right(Format(j, "0000"), 3), Arr(R, Col)) Then
- Arr2(j, i) = Arr2(j, i) + 1
- Exit For
- End If
- Next
- Next
- Next
- Next
- Application.ScreenUpdating = False '禁上刷新屏幕,提高运行速度
- Range("l3:dg" & [l65536].End(3).Row).ClearContents '清除数据
- [l3].Resize(1000, LC) = Arr2 '写入数组结果到单元格里
- Application.ScreenUpdating = True '恢复刷新屏幕
- End Sub
复制代码[/code]
哪位大神帮我修改一下VBA,谢谢.rar
(127.84 KB, 下载次数: 11)
|
|