안녕하세요?
이렇게 정상적인 DB 테이블 형태라면 굳이 원하시는 결과보단 피벗테이블을 활용하시는게 더
좋으리라 생각됩니다.
첨부파일의 피벗테이블 시트에 참고하시라고 작성해 두었습니다.
그리고 원하시는 결과는 Sheet1의 버튼을 클릭해 보세요.
아래 코드는 첨부파일에 사용된 코드입니다.
Option Explicit
Sub Test()
Dim i As Long, j As Long, Sum_T As Currency
Application.ScreenUpdating = False
With Worksheets("Sheet1")
j = .Cells(Rows.Count, 1).End(xlUp).Row + 1
For i = j To 5 Step -1
If .Cells(i, 2).Value <> .Cells(i - 1, 2).Value Then
.Rows(i).Insert
.Cells(i, 2).Value = .Cells(i - 1, 2).Value
.Cells(i, "f").Value = Application.WorksheetFunction.SumIf(.Columns(2), .Cells(i - 1, 2).Value, .Columns("f"))
.Cells(i, "f").NumberFormat = "#,##0_-"
.Range(.Cells(i, 1), .Cells(i, "f")).Interior.Color = 15849925
Sum_T = Sum_T + .Cells(i, "f").Value
End If
Next i
.Cells(Rows.Count, 2).End(xlUp).Offset(1).Value = "계"
.Cells(Rows.Count, 2).End(xlUp).Offset(, -1).Resize(, 6).Font.Bold = True
.Cells(Rows.Count, 2).End(xlUp).Offset(, -1).Resize(, 6).Interior.Color = 15849925
.Cells(Rows.Count, 2).End(xlUp).Offset(, 4).Value = Sum_T
.Cells(Rows.Count, 2).End(xlUp).Offset(, 4).NumberFormat = "#,##0_-"
.Range("a3").CurrentRegion.Borders.Weight = xlThin
End With
Application.ScreenUpdating = True
End Sub
Sub Clr()
If MsgBox("원대 데이터로 변환하시겠습니까?", vbQuestion + vbYesNo, "원상복귀...!") = vbYes Then
With ActiveSheet
.Range(.Range("b3"), .Cells(Rows.Count, 2).End(xlUp)).Offset(, 1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End If
End Sub
그럼 잘 해결되시길... ^^*
추신 : 마지막으로 당부 한말씀 드립니다. 첨부파일이 있는 질문은 게시판 성격에 맞도록 아래 묻고 답하기(파일 첨부)을 이용해 주시면 더 고맙겠습니다.
=============================================================================
첨부파일
100705_서울영업소.xlsm
=============================================================================