728x90

이름별로 구매금액 합계 구하기



이름별로 구매금액의 합계를 구하는 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



Sum_of_Same_Name.xlsm


SameName_Sum.vbs


코드 이용방법은 엑셀에서 Alt + F11 키를 누르면 코드입력창이 나옵니다

상단메뉴에서 [삽입] [모듈] 선택하면 나오는 창에다가 위의 VBS파일 내용을 복사하여 붙여넣기 하면 됩니다.

또는 샘플로 나온 파일을 위와 같이 열어서 보셔도 되구요.

중요한 건 내가 작업하고자 하는 셀에 변수열만 잘 바꿔서 작업하면 된다는 겁니다.


블로그 이미지

Link2Me

,