Excel精英培训网

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

[已解决]请各位老师帮忙修改一下代码,谢谢!

[复制链接]
发表于 2017-2-28 15:37 | 显示全部楼层 |阅读模式
For j = 1 To n
r = 10 + (j - 1) * 50
   For i = 1 To UBound(arr)
      If arr(i, 1) = j Then
      s = s + 1:
      br(s, 1) = arr(i, 2)
      br(s, 2) = arr(i, 3)
      br(s, 3) = arr(i, 4)
   End If
   Next
   Range("d" & r).Resize(UBound(br), 3) = br
    Set d = Nothing
    Next j
上面这段代码执行结果是:
当J=1时,取的是对应1的结果,取数正确
当J=2时,会把1的结果也取进来
当J=3时,会把1、2的结果也取进来
我希望的是可以对应取值:
当J=1时,取的是对应1的结果
当J=2时,取的是对应2的结果
当J=3时,取的是对应3的结果
当J=n时,取的是对应n的结果
请各位老师帮忙看一下,怎么修改,谢谢!
最佳答案
2017-2-28 16:36

前附赋没清除
字典没作用
改法之一(见红色部分):
For j = 1 To n
r = 10 + (j - 1) * 50
s = 0
   For i = 1 To UBound(arr)
      If arr(i, 1) = j Then
      s = s + 1:
      br(s, 1) = arr(i, 2)
      br(s, 2) = arr(i, 3)
      br(s, 3) = arr(i, 4)
   End If
   Next
   Range("d" & r).Resize(s, 3) = br
  
Next j

修改代码求助.rar

17.7 KB, 下载次数: 5

发表于 2017-2-28 16:13 | 显示全部楼层
没看出两个结果不一样来...哪个对哪个错啊?
123.jpg
回复

使用道具 举报

 楼主| 发表于 2017-2-28 16:27 | 显示全部楼层
你运行一下,看第二、三页的结果
回复

使用道具 举报

发表于 2017-2-28 16:36 | 显示全部楼层    本楼为最佳答案   

前附赋没清除
字典没作用
改法之一(见红色部分):
For j = 1 To n
r = 10 + (j - 1) * 50
s = 0
   For i = 1 To UBound(arr)
      If arr(i, 1) = j Then
      s = s + 1:
      br(s, 1) = arr(i, 2)
      br(s, 2) = arr(i, 3)
      br(s, 3) = arr(i, 4)
   End If
   Next
   Range("d" & r).Resize(s, 3) = br
  
Next j

评分

参与人数 1 +1 收起 理由
zhaohu800 + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-2-28 16:47 | 显示全部楼层
太厉害了,完全达到要求,非常感谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 03:33 , Processed in 0.283034 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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