2009-11-14 2 views
1

각 그룹 아래에 합계와 페이지 나누기가있는 행을 삽입해야합니다.각 그룹에 합계가있는 행 삽입

행을 삽입하려면 다음을 시도했지만, 하나만 원할 때는 둘 이상의 행을 삽입했습니다.

Sub macro() 
Dim sh1 As Worksheet 
Dim i As Long, lastrow1 As Long 

Set sh1 = Worksheets("Sheet1")  
lastrow1 = sh1.Cells.SpecialCells(xlCellTypeLastCell).Row 

For i = 1 To lastrow1 

    If sh1.Cells(i, "A").Value = "sell" Then 
     sh1.Cells(i, "A").EntireRow.Insert 
    End If 
Next i 
End Sub 

답변

3

저는 VBA에 대한 전문 지식이 없지만 "판매"를 발견 할 때마다 코드에 행이 삽입되어 여러 행이 삽입되는 것처럼 보입니다.

for 루프에서 빠져 나오기 위해 행을 삽입 한 후에 휴식을 추가하십시오.

희망이 도움이됩니다.
AH 주, VBA Exit For 그렇게 코드가

Set sh1 = Worksheets("Sheet1")  
lastrow1 = sh1.Cells.SpecialCells(xlCellTypeLastCell).Row 

For i = 1 To lastrow1 
    If sh1.Cells(i, "A").Value = "sell" Then 
     sh1.Cells(i, "A").EntireRow.Insert 
     Exit For 
    End If 
Next i 
End Sub 
1

이 열 두 개 이상의 서로 다른 문자열과 함께 작동합니다

Sub InsertTotals() 

    Dim i As Long 
    Dim lLastRow As Long 
    Dim sh1 As Worksheet 

    Set sh1 = ActiveWorkbook.Worksheets("Sheet1") 

    lLastRow = sh1.Cells(sh1.Rows.Count, 1).End(xlUp).Row 

    For i = lLastRow + 1 To 2 Step -1 
     If sh1.Cells(i, 1).Value <> sh1.Cells(i - 1, 1).Value Then 
      sh1.Cells(i, 1).EntireRow.Insert 
     End If 
    Next i 

End Sub 
1

가 여기에 또 다른입니다 것 루프 에 대한 탈옥하는 데 사용됩니다 방법은 Excel의 기본 제공 부분합을 사용합니다. 본질적으로 열을 삽입하는 것이 아니지만 궁극적 인 목표가 열 B의 부분합을 계산하는 것이 더 적합 할 수 있습니다.

Sub InsertSubtotals() 

    Dim rTransactions As Range 
    Dim sh1 As Worksheet 

    Set sh1 = ActiveWorkbook.Worksheets("Sheet1") 
    sh1.Range("A1").EntireRow.Insert 
    sh1.Range("A1:B1").Value = Array("Type", "Amount") 

    Set rTransactions = sh1.Range("A1", sh1.Cells(sh1.Rows.Count, 1).End(xlUp)) 

    rTransactions.Resize(, 2).Subtotal 1, xlSum, Array(2) 

End Sub