有没有其他方法可以在VBA中运行两个不同的循环?

时间:2017-11-13 21:20:40

标签: vba excel-vba excel

我有两个循环,我循环计算第一张表中的行,ii循环计算第二张表中的行,但在我的第二张表中,我的条件不符合我需要的要求,它只是回到我循环。我想在第二个循环中找到一个空单元格,但它不会经历整个条件。任何想法......

For i = 3 To lastrow
 ' condition to check number
 If IsNumeric(ws1.Cells(i, 1)) Then
    If ws1.Cells(i, 1) <> "" Then
    cName = ws1.Cells(i, 1)
    'This one is for second loop
      For ii = 3 To lastroww
           If ws2.Cells(ii, 3) = "" Then
            ws2.Cells(ii, 3) = "Name" + cName + "City"
           End If
      Next ii
  End If
  End If
Next i

2 个答案:

答案 0 :(得分:0)

i的初始循环逐个遍历第一张中的所有值,对于每个值,在第一张中我们遍历第二张中的所有值,因为此循环与第一个循环嵌套。即

For i = 3 To lastrow

  For ii = 3 To lastroww
      ' for every i you go through all values in sheet 2
  Next ii

结束如果   万一 接下来我

因此,如果第1张中有10个元素,而第2张中有10个元素。外部循环选择工作表1中的第一个元素,然后检查工作表2中的所有10个元素.net选择工作表1中的第二个元素,然后再次遍历工作表2中的相同10个元素并继续。

所以当你的i的外循环最初运行时,它会填充第二张表中缺失的值。现在,当这些值被填充时,对于下一个i值,第二张表中的空值的条件不满足,因为它们已在第一次迭代中填充。

我希望它能澄清您的疑问。

答案 1 :(得分:0)

   For ii = 3 To lastroww
        lastroww = ws2.UsedRange.Rows.Count
          If ws2.Cells(ii, 3) = "" Then
          ws2.Cells(ii, 3) = "Name" + cName + "City"
       End If
  Next ii