Excel vba如何写才能不漏行计算

Dim i As Integer, j4, j5
j4 = 2
j5 = 1
For i = 1 To 6001
If Cells(i, 7).Value = "" Then
Rows(i).Copy Sheet4.Rows(j4)
j4 = j4 + 1
Else
Rows(k).Copy Sheet5.Rows(j5)
j5 = j5 + 1
_______________________________这个是逐句判断G列的值是否为空,如果是空就复制到sheet4,如果非空就复制到sheet5,,现在遇到的问题是每次都跳过一行,匹配出来的结果正好少一半...该如何修改运算的方式,让每行都被计算到,不忽略行.

第1个回答  2014-05-27

k 是哪来的? 

你的意思是不是这样:

检查当前的Sheet中的G列, 如果 为空, 就把 该行 复制到  Sheet4, 否则 复制到 sheet5 


我的意思是 被复制行, 就是当前 sheet 的 第1到6001行(因为我没有看明白 您的 k 变量 是哪来的)

如果我理解对的话, 下面的程序大概可以满足: 



    Dim i As Integer, j4 As Integer, j5 As Integer  ' j4, j5 按你的写法 是 variant 类型
    j4 = 2
    j5 = 1
    For i = 1 To 6001
       If Cells(i, 7).Value = "" Then
       Rows(i).Copy Sheet4.range("A" & j4)
       j4 = j4 + 1
   Else
       Rows(i).Copy Sheet5.range("A" & j5)
       j5 = j5 + 1
    endif
next


我感觉不会每次都跳过一行. 如果我理解的不正确, 继续交流.

追问

呵呵不好意思i变量就是k,这个我之前弄忘记改回来了……谢谢

追答

那上面的代码还会 跳行????

追问

运行了,和原来的一样效果,也会跳行,隔行计算一个,丢了整好一半

追答

如果 没有 机密的话, 请把 文件给我发一份.
我这边只能用邮件
lss876#腾讯.com

本回答被网友采纳
第2个回答  2014-05-27
额,看了下代码,没看到有跳过啊,每次都执行一行,你是不是在循环内加了一个i=i+1啊?
for循环变量是自动增加的,不需要手动加。追问

真的没加,下面直接就是 end if了

追答

next之前呢?你的代码没看出问题,除了楼下说的变量k,一切正常,如果不愿意多贴代码,看不出问题在哪里。

第3个回答  2014-05-27
For i = 1 To 6001

改成
for i=6001 to 1 step -1
试试看。追问

不行啊,问题依旧,只是复制到其他sheet的数据被粘到6001行往上了。

追答

你这段代码里变量太多,看不懂。方便发文件给我。q 九285三一376

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网