Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: adadada

[已解决]帮忙解释下代码?

[复制链接]
发表于 2014-5-29 17:28 | 显示全部楼层
在这段代码里,加不加exit for,没区别。

exit for作用是退出最接近循环体的循环,这里是退出内循环。
由于exit for 已处于内循环体的最后一句了,所以用不用都没区别。

就好比一个人给每个办公室里的所有人发钱,每次发完某个办公室之后,就加上一个动作:退出办公室。显然,加不加退出动作,都是一样的效果。
回复

使用道具 举报

发表于 2014-5-29 17:31 | 显示全部楼层
另qh8600同学关于exit for这一句的注释也是错误的,应该是有相同时跳出循环,
而不是没有时跳出循环
回复

使用道具 举报

发表于 2014-5-29 17:33 | 显示全部楼层
很遗憾,爱疯超版的理解也是错误的,
你仔细看一下作者的意图是跳出哪个循环?
不是最内的循环吧?
回复

使用道具 举报

 楼主| 发表于 2014-5-29 17:35 | 显示全部楼层
大灰狼1976 发表于 2014-5-29 17:31
另qh8600同学关于exit for这一句的注释也是错误的,应该是有相同时跳出循环,
而不是没有时跳出循环{:1_1: ...

应该是有相同时跳出循环?
能不能解释下
回复

使用道具 举报

发表于 2014-5-29 17:43 来自手机 | 显示全部楼层
由于exit for 已处于内循环体的条件里面的最后一句了,所以 这里 用不用都没区别。

就好比一个人给每个办公室里的男人发钱,每次发完某个办公室之后,就加上一个动作:退出办公室。
如果是否是男人这个条件后,还有其它事情,就有区别。
如果这个条件后没有其它事情,就没区别。


ps,刚才回快了,没表达清楚
回复

使用道具 举报

发表于 2014-5-29 17:53 来自手机 | 显示全部楼层
大灰狼1976 发表于 2014-5-29 17:33
很遗憾,爱疯超版的理解也是错误的,
你仔细看一下作者的意图是跳出哪个循环?
不是最内的循环吧?

谢谢大灰狼


11#确实不对应,回帖时忘了提到条件,是错的
15#没错把
回复

使用道具 举报

发表于 2014-5-29 18:29 | 显示全部楼层
adadada 发表于 2014-5-29 17:35
应该是有相同时跳出循环?
能不能解释下

问题是你的代码有问题,我只不过帮你解释一下,进入第二层 for 循环之后,你先判断,是不是相同,如果是相同的话,你要退出循环,代码应该是
If brr(j, 1) = arr(i, 1) Then
x=x+1
for k=1 to 4
crr(x k) = brr(j, k)
next
else
exit for
end if



回复

使用道具 举报

发表于 2014-5-29 20:25 | 显示全部楼层
Sub test()
    Dim i&, j&, k&, m&, n&
      
    m = [e65536].End(3).Row - 2
    arr = [e3].Resize(m)
   
    n = [f65536].End(3).Row - 2
    brr = [f3].Resize(n, 4)
   
   
    ReDim crr(1 To m, 1 To 4)
    For i = 1 To m
        For j = 1 To n
            If brr(j, 1) = arr(i, 1) Then
                For k = 1 To 4
                    crr(i, k) = brr(j, k)
                Next
                Exit For
                '位置1
            End If
            '位置2
        Next
    Next
   
    [f3].Resize(m, 4) = crr
End Sub

如果位置1上或者位置2上,还有其他操作:
加Exit For,就会跳过不执行
不加Exit For,就回执行。


回复

使用道具 举报

 楼主| 发表于 2014-5-29 20:27 | 显示全部楼层
qh8600 发表于 2014-5-29 18:29
问题是你的代码有问题,我只不过帮你解释一下,进入第二层 for 循环之后,你先判断,是不是相同,如果是相 ...


你这个代码把FGHI数据清空了
回复

使用道具 举报

发表于 2014-5-29 23:51 | 显示全部楼层
仔细看了一下,楼主的代码在逻辑上毫无问题,楼主只想确认一点,加不加exit  for似乎结果没有不同,有什么意义,仅此而已,而关于这一点,我已经作了答复,大家就不要混淆视听了吧,哈哈

评分

参与人数 1 +1 收起 理由
adadada + 1

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 15:43 , Processed in 0.208028 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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