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,,现在遇到的问题是每次都跳过一行,匹配出来的结果正好少一半...该如何修改运算的方式,让每行都被计算到,不忽略行.
k 是哪来的?
你的意思是不是这样:
检查当前的Sheet中的G列, 如果 为空, 就把 该行 复制到 Sheet4, 否则 复制到 sheet5
我的意思是 被复制行, 就是当前 sheet 的 第1到6001行(因为我没有看明白 您的 k 变量 是哪来的)
如果我理解对的话, 下面的程序大概可以满足:
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
for循环变量是自动增加的,不需要手动加。追问
真的没加,下面直接就是 end if了
追答next之前呢?你的代码没看出问题,除了楼下说的变量k,一切正常,如果不愿意多贴代码,看不出问题在哪里。
改成
for i=6001 to 1 step -1
试试看。追问
不行啊,问题依旧,只是复制到其他sheet的数据被粘到6001行往上了。
追答你这段代码里变量太多,看不懂。方便发文件给我。q 九285三一376
本回答被提问者采纳