Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4116|回复: 10

[已解决]哪位大神帮我修改一下VBA,谢谢

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

哪位大神帮我修改一下VBA,谢谢.zip

123.19 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-5-13 00:19 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2014-5-13 00:26 | 显示全部楼层
su45 发表于 2014-5-13 00:19
咱是没看懂!待高人来吧!

A列的数字,含有D2K2列里的数字统计出来有几个放了L列里
回复

使用道具 举报

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

评分

参与人数 2 +7 收起 理由
蓝粆 + 6 加完分的感觉真不好~
鬼吹灯 + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-5-13 05:10 | 显示全部楼层
FnG 发表于 2014-5-13 02:07
[/code]

非常感谢,完美解决问题,对于我的问题耐心细致,很热情,再次感谢!!!
回复

使用道具 举报

发表于 2014-5-13 08:33 | 显示全部楼层
鬼吹灯 发表于 2014-5-13 05:10
非常感谢,完美解决问题,对于我的问题耐心细致,很热情,再次感谢!!!

解决问题要给满意答案一个最佳嘛
回复

使用道具 举报

发表于 2014-5-13 08:34 | 显示全部楼层
感谢以后有有便是,起码么要设为最佳答案哈。



--------------------------------------------------------------
死读书,不求甚解
回复

使用道具 举报

 楼主| 发表于 2014-5-13 13:25 | 显示全部楼层
我心飞翔410 发表于 2014-5-13 08:33
解决问题要给满意答案一个最佳嘛

偶是菜鸟,刚到坛子里有的坛子功能还不会用呢,偶的帐号刚注册的,请大家对我担待点,谢谢
回复

使用道具 举报

 楼主| 发表于 2014-5-13 13:27 | 显示全部楼层
wdqinweiyu 发表于 2014-5-13 08:34
感谢以后有有便是,起码么要设为最佳答案哈。

偶刚注册的坛子帐号,还不懂怎么弄呀,不过看了您的回复已经设了最佳答案咧,谢谢提高醒
回复

使用道具 举报

 楼主| 发表于 2014-5-13 13:28 | 显示全部楼层
FnG 发表于 2014-5-13 02:07
[/code]

偶评分的时候怎么只能评1分呀,我看了人家可以评6分的呀,真心不懂怎么弄这个评分
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-28 01:18 , Processed in 0.143786 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表