永发信息网

excel VBA中Do While语句的判断错误

答案:3  悬赏:50  手机版
解决时间 2021-03-31 22:43
excel VBA中Do While语句的判断错误
最佳答案
你直接说你想要什么效果就好了。
你这代码太多了,说清楚你想要实现的效果,两三行代码应该可以解决了。追问判断表格1中A列单元格是否有有数据,有就复制到表格2中A列里追答复制到A列的哪个单元格啊?
下面代码是复制到  A1 单元格。
Sub AAA()
    Sheets("订单明细").Columns("A").SpecialCells(xlCellTypeConstants).Copy _
    Sheets("缓冲状态-优先级管理").Range("A1")
End Sub是不是想下面图片这样复制A列所有有数据的单元格?

追问比这个还简单些,我上图吧

数据从A4开始,先判断A列单元格是否有数据,
然后判断两个条件:1,M列(答复交期)为是。
                                2,K列(已入库)不为是。
然后将筛选出来的数据复制到“缓冲状态-优先级管理”当中,也是从A4开始,粘贴。


   
追答只是要 A 列的数据而已吗?
下面两段代码, AAA 为按你原来思路写的。
BBB 为数组的方式,速度会比 AAA 快。基本上瞬间可以完成。
Sub AAA()
    I = 4
    J = 4
    Do While Worksheets("订单明细").Cells(I, 1).Value <> ""
        If Worksheets("订单明细").Range("M" & I) = "是" And Worksheets("订单明细").Range("K" & I) <> "是" Then
            Worksheets("缓冲状态-优先级管理").Range("A" & J) = Worksheets("订单明细").Range("A" & I)
            J = J + 1
        End If
        I = I + 1
    Loop
End SubSub BBB()
    Dim Ar
    Dim Br
    Dim I   As Long
    Dim N   As Long
    Ar = Worksheets("订单明细").UsedRange
    ReDim Br(1 To UBound(Ar), 1 To 1)
    For I = 4 To UBound(Ar)
           ' A 列不为空          K 列不为 "是"           M 列为 "是"
        If Ar(I, 1) <> "" And Ar(I, 11) <> "是" And Ar(I, 13) = "是" Then
            Br(N, 1) = Ar(I, 1)
            N = N + 1
        End If
    Next
    Worksheets("缓冲状态-优先级管理").Range("A4").Resize(N) = Br
End Sub追问万分感谢!!
第一种完全正确,只是为是的是H列,不是M列,可能图片不清楚。
但是第二种运行到Br(N,1)=Ar(I,1)时显示下标越界,请问是怎么回事,如果我不仅要A列数据,而是要A~K列的所有数据呢?追答额 不是你说的 M列 和K列吗?
(数据从A4开始,先判断A列单元格是否有数据,
然后判断两个条件:1,M列(答复交期)为是。
                                2,K列(已入库)不为是。
然后将筛选出来的数据复制到“缓冲状态-优先级管理”当中,也是从A4开始,粘贴。)
Sub AAA()
    I = 4
    J = 4
    With Worksheets("订单明细")
    Do While .Cells(I, 1).Value <> ""
        If .Range("M" & I) = "是" And .Range("K" & I) <> "是" Then  '反正这里就是写条件啦,自己修改就好了
            .Range("A" & I & ":K" & I).Copy Worksheets("缓冲状态-优先级管理").Range("A" & J)
            J = J + 1
        End If
        I = I + 1
    Loop
End Sub

Sub BBB()
    Dim Ar
    Dim Br
    Dim I   As Long
    Dim N   As Long
    Ar = Worksheets("订单明细").UsedRange
    ReDim Br(1 To UBound(Ar), 1 To 11)
    For I = 4 To UBound(Ar)
           ' A 列不为空          K 列不为 "是"           M 列为 "是"
        If Ar(I, 1) <> "" And Ar(I, 11) <> "是" And Ar(I, 13) = "是" Then
            N = N + 1
            For J = 1 To 11
                Br(N, J) = Ar(I, J)
            Next
        End If
    Next
    Worksheets("缓冲状态-优先级管理").Range("A4").Resize(N, 11) = Br
End Sub
全部回答
你这个进度条控制的R,如果它是在r = R +1后插入进度条
Do While Sheets("订单明细").cell(1, i) <> ""
换成
Do While Sheets("订单明细").Cells(1, i) <> ""
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有没有ENFP女看上INFP男的
烤烟新品种云烟99哪里有售方
外汇做市商是如何做市的,用的是什么交易制度
喜爱辛辣食物 因经常熬夜变得不能吃辣很郁闷
去洗脸吧里边洗脸清洁作用怎么样?
心存善意,定能途遇天使;心存希望,走向人生的
如何分红股票
我已经在网上订了机票,如何取票
小升初中学发了邀请函有什么用?
班长落选求解闷
市场卖的60*30高35的鱼缸几十块钱的鱼缸质量
作为招聘专员,在参与过程应该做好那些工作
学美容需要些什么要求呢,难道必须要皮肤好,
NB-IOT和eMTC的区别和发展趋势
心塞,心烦,闹心,是暗示不想聊天的意思吗
推荐资讯
这个老鼠的名字是什么?
夏至未至的下一句是什么?
地下城堡冒险者升级的道具(比如剑,盔甲)怎
汽车 17位 车架号 每一位各代表什么意思 我只
剑网三扶摇满级了,为什么我空格按不出扶摇二
名下无房有商铺再买房算首套吗
南岳衡山 从南天门到祝融峰需要多长时间
是六七年前在云端C上面玩的一个单机游戏
163邮箱里面,标有小红旗的邮件是什么意思?
小明、小华、小丽三人互相赠送了一张卡片、他
小孩子上学是哈尔滨好还是大连好
我总是担心新买的东西会坏掉 是一种心理问题
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?