엑셀 GROUPBY 함수 총정리 | 피벗테이블 뛰어넘는 데이터 분석 끝판왕!

피벗테이블의 한계를 뛰어넘는 GROUPBY 함수의 본격 등장! 기존 피벗테이블로는 구현이 어려웠던 실시간 분석과 함께 고급 차트를 활용한 시각화 스킬을 배워보세요! 👉

# 함수및공식 # 데이터분석 # 차트

작성자 :
오빠두엑셀
최종 수정일 : 2025. 03. 11. 23:30
URL 복사
메모 남기기 : (3)

엑셀 GROUPBY 함수, 20분 총정리 특강

엑셀 GROUPBY 함수 총정리 목차 바로가기
영상 강의

큰 화면으로 보기

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [실무기초] 엑셀 GROUPBY 함수 기초-활용 15분 총정리 특강
    예제파일

.

라이브 강의 전체영상도 함께 확인해보세요!

위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.


GROUPBY 함수 기초 사용법

피벗테이블의 한계를 뛰어넘는 함수, GROUPBY가 엑셀에 새롭게 추가되었습니다! 기존 피벗테이블만으로는 구현이 어려웠던 실시간 보고서, 고급 차트까지 자동화는 GROUPBY 꿀팁을 이번 강의에서 확인해보세요!👇

⭐ GROUPBY 함수 기본 구문

=GROUPBY(행영역, 값영역, 함수, [머리글여부], [합계표시], [정렬순서], [필터배열], [필드관계])
: 데이터를 그룹화하여 집계된 요약 보고서를 반환합니다.

GROUPBY 함수의 자세한 기초 사용법은 아래 링크를 확인하세요!

  1. 먼저 예제파일의 [기초] 시트에서 GROUPBY 함수 기초 사용법을 알아보겠습니다. [기초] 시트 상단의 [+] 버튼을 클릭해서 그룹을 펼치면 좌측 판매내역 데이터로 만든 피벗테이블이 있습니다.
    엑셀-피벗테이블-그룹-해제
    + 버튼을 클릭해서 그룹을 펼치면 피벗테이블을 확인할 수 있습니다.
    오빠두Tip : 그룹 기능 사용법은 아래 기초 입문 강의를 참고하세요!👇
  2. 판매내역 데이터에서 제품 카테고리별 매출액을 집계해보겠습니다. Q7셀을 선택하고 다음과 같이 GROUPBY 함수를 작성합니다.
    =GROUPBY(예제[카테고리],예제[매출액],SUM)

    엑셀-GROUPBY-함수-기초
    Q7셀에 GROUPBY 함수를 작성합니다.
  3. 함수를 입력하면 카테고리별 매출액 합계가 집계되고, 함수의 3번째 인수인 '집계 방식'을 SUM, AVERAGE, COUNTA 등으로 선택해서 집계 방식을 편리하게 변경할 수 있습니다.

    GROUPBY-함수-평균-집계
    집계 방식을 편리하게 변경할 수 있습니다.
  4. 만약 피벗테이블과 같이 '카테고리와 제품명'을 기준으로 데이터를 집계해야 할 경우, 행 영역으로 범위를 선택합니다. Q7셀에 GROUPBY 함수를 다음과 같이 작성하면 카테고리와 제품명 기준 매출액이 집계됩니다.
    =GROUPBY(예제[[카테고리]:[제품명]],예제[매출액],AVERAGE)

    GROUPBY-함수-여러-필드-집계
    행 필드로 범위를 입력해서 여러 기준으로 데이터를 집계할 수 있습니다.
  5. 하지만 "카테고리, 제품명"이 아닌 "지점, 카테고리"와 같이 서로 떨어진 필드를 선택할 경우에는 다른 방법을 사용해야 하는데요. 아래 예제를 통해 GROUPBY 함수의 활용법을 하나씩 알아보겠습니다.

    GROUPBY-여러-필드-오류
    서로 떨어진 범위를 입력하려면 다른 방법을 사용해야 합니다.

활용1 : 여러 기준으로 데이터 집계하기

GROUPBY 함수와 HSTACK 함수를 조합하면 여러 조건을 기준으로 집계하거나 여러 결과를 동시에 출력할 수 있습니다. VSTACK & HSTACK 함수의 다양한 활용 예제는 아래 기초 입문 강의에서 자세히 정리했으니 참고하세요!👇

  1. 이번에는 HSTACK 함수를 사용해서 다양한 조건으로 데이터를 집계하는 방법을 알아보겠습니다. [기초] 시트에서 Q6:T6 범위 머리글을 아래 그림과 같이"지점, 카테고리, 매출액, 할인율"로 변경합니다.
    기초-시트-머리글-변경
    [기초] 시트에서 머리글을 변경합니다.
  2. 먼저 지점과 카테고리를 기준으로 매출액 합계를 집계한 보고서를 만들어보겠습니다. Q7셀에 다음와 같이 행 필드에 HSTACK 함수를 활용하여 GROUPBY 함수를 작성하면 지점과 카테고리를 기준으로 매출액이 집계된 보고서가 완성됩니다.
    =GROUPBY(HSTACK(예제[지점],예제[카테고리]),예제[매출액],SUM)

    GROUPBY-HSTACK-함수
    HSTACK 함수를 사용해 서로 떨어진 두 범위를 기준으로 데이터를 집계합니다.
  3. 값 필드에도 HSTACK 함수를 사용할 수 있습니다. 아래와 같이 값 영역에 HSTACK 함수로 매출액과 할인율을 동시에 입력하면 값으로 매출액과 할인율이 동시에 집계됩니다.
    =GROUPBY(HSTACK(예제[지점],예제[카테고리]),HSTACK(예제[매출액],예제[할인율]),SUM)

    엑셀-GROUPBY-함수-여러-값-출력
    HSTACK 함수는 값 영역에도 사용할 수 있습니다.
  4. 할인율은 '비율'이기 때문에, 집계 방식으로 합계 대신 평균을 사용해야 올바른 결과를 얻을 수 있습니다. 따라서, 아래와 같이 집계 방식에도 HSTACK 함수를 사용해서 첫번째 필드는 합계(SUM), 두번째 필드를 평균(AVERAGE)으로 집계할 수 있습니다.
    =GROUPBY(HSTACK(예제[지점],예제[카테고리]),HSTACK(예제[매출액],예제[할인율]),HSTACK(SUM,AVERAGE))

    엑셀-GROUPBY-함수-여러-집계
    집계방식에 HSTACK 함수를 사용하면 각 필드별 다른 방식으로 데이터를 집계할 수 있습니다.

활용2 : 텍스트 취합하기

  1. 기존 피벗테이블은 텍스트 필드를 값으로 추가하면 '개수'로 집계되었습니다. 따라서, 텍스트로 취합하려면 '데이터 모델 피벗테이블'을 사용해야만 했습니다.
    엑셀-피벗테이블-텍스트-집계
    피벗테이브로 텍스트를 취합하려면 데이터모델의 측정값을 사용해야 합니다.
    오빠두Tip : 데이터 모델 피벗테이블을 활용해 텍스트 필드를 취합하는 방법은 아래 기초 입문 강의에서 알기 쉽게 정리했으니 참고하세요!👇
  2. 하지만 GROUPBY 함수는 기본 집계 방식으로 텍스트 취합을 제공하므로 문자로 작성된 데이터도 편리하게 집계할 수 있습니다. [기초] 시트에서 Q6:R6 머리글을 "지점, 담당자"로 수정합니다.
  3. 이후 Q7 셀에 다음과 같이 GROUPBY 함수를 작성하면 지점별 담당자 목록이 취합됩니다.
    =GROUPBY(예제[지점],예제[담당자],ARRAYTOTEXT)

    엑셀-GROUPBY-ARRAYTOTEXT-집계
    GROUPBY 의 집계 함수로 'ARRAYTOTEXT'를 선택합니다.
  4. 하지만 GROUPBY 함수에서 기본으로 제공하는 ARRAYTOTEXT 방식은 중복값이 그대로 표시되어 중복값을 제거하려면 LAMBDA 함수를 사용해야 합니다. GROUPBY 함수를 아래과 같이 수정하면 담당자 고유 목록이 집계됩니다.
    =GROUPBY(예제[지점],예제[담당자],LAMBDA(r,TEXTJOIN(",",,UNIQUE(r))))
    엑셀-LAMBDA-텍스트-고유값-집계
    텍스트 고유값을 집계해야 할 경우, LAMBDA 함수를 사용합니다.
    오빠두Tip : LAMBDA 함수는 나만의 사용자 함수를 만들어주는 중요한 자동화 함수입니다. LAMBDA 함수 기초 사용법은 아래 영상을 참고하세요!👇

활용3 : 조건부서식으로 실시간 피벗테이블 만들기

GROUPBY 함수와 조건부서식을 활용하면 데이터가 변경되었을 때 실시간으로 업데이트 되는 피벗테이블 보고서를 만들 수 있습니다.

  1. [기초] 시트에서 Q6:S6 범위의 머리글을 "지점, 카테고리, 매출액"으로 수정한 후, Q7셀에 다음과 같이 GROUPBY 함수를 입력합니다.
    =GROUPBY(HSTACK(예제[지점],예제[카테고리]),예제[매출액],SUM)

    엑셀-GROUPBY-매출액-집계
    지점, 카테고리별 매출액 합계를 집계하도록 GROUPBY 함수를 작성합니다.
  2. GROUPBY 함수의 5번째 인수인 [전체 깊이]를 변경하면 피벗테이블의 합계와 소계의 위치와 표시여부를 선택할 수 있습니다. 기존 피벗테이블은 합계가 항상 아래에 표시되었지만, GROUPBY 함수는 합계의 위치를 위/아래로 선택해서 표시할 수 있습니다.
    1(기본값) : 합계만 표시, 2 : 합계/소계 표시
    -1 : 합계를 위에 표시, -2 : 합계/소계를 위에 표시

    피벗테이블-합계-위-표시
    GROUPBY 함수는 합계/소계 행의 위치를 지정할 수 있습니다
  3. 이번에는 합계와 소계를 모두 표시하도록 전체 깊이를 2로 입력합니다. 이후 합계와 소계행을 강조하기 위한 조건을 살펴보면, Q열에 값이 있고 R열이 비어있다는 것을 확인할 수 있습니다.

    GROUPBY-함수-합계-소계-표시
    합계와 소계행은 지점에 값이 있고, 카테고리가 비어있는 행입니다.
  4. 조건부서식을 적용할 범위로 Q7:S27 까지 범위를 넉넉하게 선택한 후, [홈] 탭 - [조건부서식] - [새 규칙] - [수식을 사용하여 서식을 지정할 셀 결정]을 선택하고 입력창에 아래와 같이 수식을 입력합니다.
    =AND($Q7<>"",$R7="")
    엑셀-실시간-피벗테이블-조건부서식
    조건부서식 - 새 규칙에서 수식으로 조건부서식 규칙을 작성합니다.
    오빠두Tip : 조건부서식으로 전체 행을 실시간으로 강조하는 원리는 아래 기초 입문 강의를 참고하세요!👇
  5. [서식] 버튼을 클릭하고 글꼴을 굵게, 테두리는 위쪽/아래쪽 테두리를 추가합니다. 서식을 적용한 후 [확인] 버튼을 클릭합니다.

    피벗테이블-합계-강조
    조건부서식으로 강조할 서식을 지정합니다.
  6. 이제 표에 데이터를 추가하면, GROUPBY 로 작성한 피벗테이블이 실시간으로 업데이트됩니다.

    GROUPBY-함수-실시간-보고서-완성
    표에 데이터를 추가하면 집계 보고서가 실시간으로 업데이트됩니다.

활용4 : SUBTOTAL + 필터배열 활용하기

  1. GROUPBY 함수와 슬라이서를 활용하면 실시간으로 필터링되는 보고서를 만들 수 있습니다. 예제파일에서 [슬라이서활용] 시트로 이동한 후, 표 오른쪽에 아래 그림과 같이 [조건] 필드를 추가합니다.

    엑셀-GROUPBY-조건-필드-추가
    슬라이서 활용시트에서 표 우측에 조건 열을 추가합니다.
  2. 이후 조건 필드에 다음과 같이 SUBTOTAL 함수를 작성하면 조건으로 1이 계산됩니다.
    =SUBTOTAL(103,[@매출액])
    // SUBTOTAL 함수는 화면에 보이는 셀을 대상으로 집계합니다.
    //103은 개수를 셉니다.

    GROUPBY-SUBTOTAL-활용
    SUBTOTAL 함수를 입력합니다.
  3. 이제 표에 실시간으로 필터를 적용할 슬라이서를 추가해보겠습니다. 표를 선택한 후 [테이블 디자인] 탭 - [슬라이서 삽입]을 클릭하고 '지점' 슬라이서를 추가합니다.

    엑셀-GROUPBY-슬라이서-연동
    테이블 디자인 - 슬라이서 삽입에서 '지점' 슬라이서를 추가합니다.
  4. B15셀에 다음과 같이 필터 배열로 조건이 1인 경우에만 집계하도록 GROUPBY 함수를 작성합니다.
    =GROUPBY(예제_2[제품명],예제_2[매출액],SUM,,,,예제_2[조건]=1)

    GROUPBY-함수-필터-배열
    조건필드의 값이 1인 경우만 집계하도록 GROUPBY 함수를 작성합니다.
  5. 이제 슬라이서 버튼을 클릭하면 필터링 된 데이터에 대해서만 집계가 되는 것을 확인할 수 있습니다. SUBTOTAL 함수는 화면에 보이는 셀만 집계하므로, 필터가 걸려서 숨겨진 범위는 조건이 '0'로 계산되어 집계에서 제외됩니다. SUBTOTAL 함수가 동작하는 원리는 영상 강의에서 알기 쉽게 정리했으니 참고하세요!

    엑셀-GROUPBY-슬라이서-필터링
    슬라이서를 클릭하면 선택한 데이터에 대해서만 집계됩니다.

활용5 : GROUPBY + 슬라이서 트리맵 차트 만들기

  1. 마지막으로 GROUPBY 함수와 슬라이서, 트리맵 차트를 활용한 대시보드를 만들어 보겠습니다. 예제파일에서 [오빠두 패션 데이터] 시트로 이동한 후, 아래쪽 표에 다음과 같이 조건열을 추가합니다.

    엑셀-GROUPBY-실시간-보고서-만들기
    '오빠두 패션 데이터' 시트로 이동한 후, 표에 조건 열을 추가합니다.
  2. 표를 선택하고 [테이블 디자인] 탭 - [슬라이서 삽입] 에서 지점, 카테고리 슬라이서를 추가한 후 대시보드 영역의 적절한 곳으로 옮겨주세요.
  3. 이제 데이터를 집계하기 위한 GROUPBY 함수를 작성합니다. A2셀에 아래와 같이 GROUPBY 함수를 작성합니다.
    =GROUPBY(매출[[카테고리]:[제품명]],매출[매출액],SUM,,0,,매출[조건]=1)
    // 필터링 된 데이터에서 카테고리 제품명을 기준으로 매출액을 집계합니다. (합계 표시 안함)

    엑셀-GROUPBY-함수-대시보드
    선택한 데이터만 집계하도록 GROUPBY 함수를 작성합니다.
  4. GROUPBY로 반환된 범위에서 임의 셀을 선택하고 [삽입]탭 - [추천차트] - [모든 차트] 에서 트리맵 차트를 선택해서 추가합니다. 기존 피벗테이블 보고서는 트리맵, 선버스트, 주식형과 같은 고급 차트를 만드는데 제약이 있는 반면 GROUPBY 함수는 다양한 고급 차트를 만들 수 있는 장점이 있습니다.

    엑셀-트리맵-차트
    삽입 - 추천차트 - 모든차트에서 트리맵 차트를 추가합니다.
  5. 차트의 제목을 지우고 적절한 위치와 크기로 옮기면 버튼을 클릭해서 필터링할 수 있는 실시간 대시보드가 완성됩니다.
    엑셀-GROUPBY-실시간-차트-완성-GIF
    실시간 트리맵 차트 대시보드가 완성됩니다.
  6. 이전 강의에서 소개해드린 스타일시트를 활용하면 아래와 같이 멋진 시각화 보고서를 만들 수 있습니다. 엑셀 스타일시트는 아래 자료실을 확인하세요!👇
5 3 투표
게시글평점
3 댓글
Inline Feedbacks
모든 댓글 보기
3
0
여러분의 생각을 댓글로 남겨주세요.x