본문 바로가기
VBA

[VBA] 그룹별 합계 구하고 병합하기 (Consolidate vs Sumif)

by 일등미노왕국 2021. 11. 14.

머리도 식힐 겸 그룹별 합계를 구한 후 병합하는 문제를 풀어보려고 한다.

원래 이런 문제의 정석은 For문을 순환하면서 현재값과 아래값을 서로 비교하면서 값들을 하나씩 증가하다가 현재값과 아래값이 서로 다르면 그때까지 증가된 값으로 병합하는게 정석이다.

 

이 블로그 자체가 그런 기본 코드를 선호하지 않기에 코드를 약간 꼬아서 만들어 보았다.

 

문제는 이렇다. 이름과 점수가 무작위로 섞혀있는 상태에서

1. 정렬을 해야한다.

2. 각 그룹을 추출해야 하고

3. 추출한 그룹의 숫자에 맞게 합계를 출력하고 병합하여야 한다.

 

이번 문제는 Consolidate와 Workbook의 함수인 Sumif로 만들어보았다.

Consolidate의 단점은 전에도 말했듯이

이런식으로 Consolidate의 작업 내역들을 임시로 출력할 영역이 필요하다.

처음값은 각 이름의 합계이고 두번째 값은 각 그룹 구성원들의 점수의 갯수이다.

이것들이 각각의 셀에 입력되게 되고 병합되는 식이다. 

물론 나중에는 Consolidate의 임시출력 영역을 반드시 삭제하여야 한다.

 

이번에는 

Sumif로 풀어보겠다.

Consolidate가 요약된 값으로 하나씩 값들을 찍으면서 병합하였다고 하면

Sumif는 동일한 그룹에 요약된 값이 모두 출력되고 한번에 병합되는 방식이기에

코드가 보기에는 간단해 보이겠지만 입력된 값이 크다면 속도는 Consolidate의 승리가 될것이다.

 

어렵지 않은 코드들이니 한번 쓰윽 보고 이해하시기 바란다.

 

그룹요약하기(21.11.14).xlsm
0.03MB

 

 

댓글