Vba 如何做一个;“边做边做”;有条件吗?

Vba 如何做一个;“边做边做”;有条件吗?,vba,excel,Vba,Excel,我尝试做一个循环,如果条件为真,单元格n索引(列E)与单元格n+1索引相同,则将列C值复制到列G中 不幸的是,最后一个C列值没有复制到G列,所以我只是用一个字符串来解析它: Sheets("Report KIT").Range("G" & n) = Sheets("Report KIT").Range("C" & n).Value 之后做一会儿。有人能帮忙吗?谢谢 Sub Macroarea1() Dim ws As Worksheet Dim LastRow As L

我尝试做一个循环,如果条件为真,单元格n索引(列E)与单元格n+1索引相同,则将列C值复制到列G中

不幸的是,最后一个C列值没有复制到G列,所以我只是用一个字符串来解析它:

Sheets("Report KIT").Range("G" & n) = Sheets("Report KIT").Range("C" & n).Value
之后做一会儿。有人能帮忙吗?谢谢

    Sub Macroarea1()
Dim ws As Worksheet
Dim LastRow As Long
Dim LastRow1 As Long, LastRow3 As Long
Dim i, n As Integer, x As Integer, y As Integer
Set ws = ActiveWorkbook.Sheets("Report KIT")

    If Sheets("Migrazioni").Range("F" & 7) = "si" Then
    n = Sheets("Migrazioni").Range("N" & 7).Value
    Do While _
Sheets("Report KIT").Range("E" & n) = Sheets("Report KIT").Range("E" & n + 1)
Sheets("Report KIT").Range("G" & n) = Sheets("Report KIT").Range("C" & n).Value
n = n + 1
Loop
Sheets("Report KIT").Range("G" & n) = Sheets("Report KIT").Range("C" & n).Value
End If
端接头


我稍微清理了一下您的循环,首先添加了一个检查
E
列值的方法,并修改了循环以检查每一行是否符合初始
E
列值以测试它。我用你的样本数据测试了它,它产生了你想要的结果。有时,这些条件循环可能很难理解

Sub Macroarea1()

    Dim wsR As Worksheet, wsN As Worksheet
    Dim LastRow As Long
    Dim LastRow1 As Long, LastRow3 As Long
    Dim i, n As Integer, x As Integer, y As Integer

    Set wsR = ActiveWorkbook.Sheets("Report KIT")
    Set wsN = ActiveWorkbook.Sheets("Migrazioni")

    If wsN.Range("F7") = "si" Then

        n = wsN.Range("N7").Value
        i = wsR.Range("E" & n).Value

        Do Until wsR.Range("E" & n) <> i
            wsR.Range("G" & n).Value = wsR.Range("C" & n).Value
            n = n + 1
        Loop 

    End If

End Sub
次大区域1()
将wsR设置为工作表,将wsN设置为工作表
最后一排一样长
调暗最后一行1的长度,最后一行3的长度
尺寸i,n为整数,x为整数,y为整数
设置wsR=ActiveWorkbook.Sheets(“报告工具包”)
设置wsN=ActiveWorkbook.Sheets(“Migrazioni”)
如果wsN.Range(“F7”)=“si”,则
n=传感器网络范围(“N7”)值
i=wsR.范围(“E”&n).值
直到wsR.Range(“E”&n)i
wsR.Range(“G”&n).Value=wsR.Range(“C”&n).Value
n=n+1
环
如果结束
端接头

Do while在编写代码之前测试逻辑。您的意思是,如果当前单元格不等于下一个单元格,则不执行任何操作。您需要在
Do While
中使用
语句来检查上面的单元格是否相等。