2016-11-10 99 views
-3

我想要实现的是在包含列A文本“rich”的特定行之后插入新行的数量,并且如果同一行中的列B包含的值小于10在该行之后插入2行。但如果同一行中的列B包含的值较高,则在该行后面插入1行。我不是编写循环代码的最佳人选。我会感谢任何帮助。如果满足2个条件,VBA插入新行

+0

你尝试过自己以后做呢?你可以在这里寻找帮助:http://stackoverflow.com/questions/1463236/loop-through-each-row-of-a-range-in-excel 和在这里: http://stackoverflow.com/questions/15816883/excel-vba-inserted-blank-row-and-shifting-cells – Wouter

回答

1

我管理了一段时间:)

Sub macro1() 
    Range("A1").Select 
    ' remember the last row that contains a value 
    Dim LastRow As Integer 
    Dim CurrentRow As Integer 
    LastRow = Range("A1").End(xlDown).Row 
    CurrentRow = 1 

    ' keep on incrementing the current row until we are 
    ' past the last row 
    Do While CurrentRow <= LastRow 

     ' if the desired string is found, insert a row above 
     ' the current row 
     ' That also means, our last row is going to be one more 
     ' row down 
     ' And that also means, we must double-increment our current 
     ' row 
     If Range("A" & CurrentRow).Value = "rich" And Range("B" & CurrentRow).Value > 10 Then 
      Range("A" & CurrentRow + 1).EntireRow.Insert xlIp 
      Range("A" & CurrentRow + 1).EntireRow.Insert xlIp 
      LastRow = LastRow + 2 
      CurrentRow = CurrentRow + 1 
     ElseIf Range("A" & CurrentRow).Value = "rich" And Range("B" & CurrentRow) < 10 Then 
      Range("A" & CurrentRow + 1).EntireRow.Insert xlUp 
      LastRow = LastRow + 1 
      CurrentRow = CurrentRow + 1 
     End If 

     ' put the pointer to the next row we want to evaluate 
     CurrentRow = CurrentRow + 1 

    Loop 

End Sub 
+1

你在第一个'if'不应该是'CurrentRow = CurrentRow + 2'吗? –

+1

您也可以将'Range(“A”&CurrentRow + 1).EntireRow.Insert xlIp'改为'Rows(CurrentRow + 1&“:”&CurrentRow + 2)。插入' –

+0

嗯可能是的,但代码以某种方式工作:D – eurano