이름별로 구매금액 합계 구하기
이름별로 구매금액의 합계를 구하는 VBA Code 입니다.
Option Explicit
Sub SameNmae_Sum()
Dim rngC As Range '// 각 셀을 넣을 변수
Dim rngAll As Range '// 색상 전체 데이터 영역을 넣을 변수
Dim rngTarget As Range '// 전체 데이터 영역을 넣을 변수
Dim cnt, i As Long
Dim Sum_Cnt As Double '// 상황에 따라 Long, Double 지정
Application.ScreenUpdating = False '화면 업데이트 (일시) 정지
'-------------------- B열을 G열에 복사 ----------------------------------
Set rngTarget = Range([B2], Cells(Rows.Count, "B").End(3))
For Each rngC In rngTarget
rngC.Offset(0, 5).Value = rngC.Value '// B열을 기준으로 0부터 시작해서 5번째
Next rngC
'------------------- G열의 중복값 모두 제거 및 오름차순 정렬 ----------------------
Set rngAll = Range("G2", Cells(Rows.Count, "G").End(3)) '// G열 데이터영역을 변수에
Cells(1, "G").Value = "성명"
Cells(1, "G").HorizontalAlignment = xlCenter '// 가운데 정렬
For Each rngC In rngAll '// G열 각셀을 순환
cnt = Application.CountIf(rngAll, rngC) '각셀의 countif 값을 변수에
If cnt > 1 Then
rngC.Resize(, 1).Clear '//그 열의 데이터를 삭제
End If
Next rngC
With Range([G2], Cells(Rows.Count, "G").End(3)) '//G2 셀부터 마지막 셀까지
.Sort key1:=Range("G2"), order1:=xlAscending '//오름차순 정렬
.HorizontalAlignment = xlCenter '// 글자를 가운데 정렬
End With
'---------------------- 같은 이름별로 구매금액 더하기 -----------------------------------
Sum_Cnt = 0
Columns("H:H").EntireColumn.ClearContents '// 값을 산출할 열 전체를 초기화
Cells(1, "H").Value = "구매금액"
For Each rngC In rngAll
For i = 2 To Cells(Rows.Count, "B").End(3).Row
If rngC.Value = Cells(i, "B").Value Then
Sum_Cnt = Sum_Cnt + Cells(i, "C").Value '//구매금액은 C열 이므로
rngC.Offset(0, 1).Value = Sum_Cnt
rngC.Offset(0, 1).HorizontalAlignment = xlCenter '// 가운데 정렬
rngC.Offset(0, 1).NumberFormat = "#,###" '// 셀서식 : 3단위 콤마
End If
Next i
Sum_Cnt = 0
Next rngC
'------------------ 개체변수 초기화(메모리 비우기) -----------------------------------
Set rngAll = Nothing
Set rngTarget = Nothing
MsgBox "작업완료"
End Sub
상단메뉴에서 [삽입] [모듈] 선택하면 나오는 창에다가 위의 VBS파일 내용을 복사하여 붙여넣기 하면 됩니다.
또는 샘플로 나온 파일을 위와 같이 열어서 보셔도 되구요.
중요한 건 내가 작업하고자 하는 셀에 변수열만 잘 바꿔서 작업하면 된다는 겁니다.
'업무 능력 향상 > 엑셀 VBA 활용' 카테고리의 다른 글
업체별 공급가액 합계 및 정렬 1 (다른 시트 데이터 가져오기) (0) | 2014.01.26 |
---|---|
색상 개수와 색깔 표시하기 (동일 시트) (0) | 2014.01.26 |
[VBA] 현재 시트 Text File로 내보내기 (0) | 2014.01.23 |
색상별로 시간합계 구하기 (0) | 2014.01.20 |
[VBA] Vlookup를 이용한 현재 재고 파악 (0) | 2014.01.20 |