2016-11-10 58 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