Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Range.Sort|Range.SubTotal|Range.Insert|Sort|Insert|SubTotal|
|OutLine|ShowLevels|RemoveSubTotal|Find|EntireColumn|
|CurrentRegion|Address|Cut|Intersect|AutoFit|

정렬,부분합,삽입하기를 하나로 묶어서 처리

앞에서 TreeView로 요약정보를 만들어 보았었다
실은 엑셀이 제공하는 요약분석기능중
부분합/SubTotal이라고 하는것이 있다
아래의 그림과 같이 만들어 보자



콤보상자에 테이블의 휠드명을 담아주고

cboX.List=Array("제품분류", "고객사", "담당직원", "제품명")

콤보상자의 선택값이 바뀔때마다
해당휠드를 테이블에서 첫번째 열로 자동이동하고
첫번째 열로 정렬(Sort)을 한후
정렬은 부분합작업을 위한 선행필수작업이다
그리고 첫번째 휠드를 부분합하게 된다
부분합이란 같은 이름의 레코드를 모두 모아서 합계를
내거나..갯수를 세거나..평균을 내거나 하는 작업이다
여기에서는 합계를 만들어 보았다

앞페이지에서 TreeView로 요약할때와 어떤 점이 틀린지
비교해 보고 상황에 따라서 분석툴을 선별하는 센스가 있으면 좋을것이다
여기에서 중요한것이 하나 있다
초보님들이 헷갈리고 넘어가는 것 중의 하나다



위의 그림과 같이 범위에 정보를 넣은후
코드를 모듈시트에 작성하고 실행해보시면 뭔소린지 알것이다

당초의 변수에 담겨진 실제의 범위의 크기가 변해버린다
이 상태에서 휠터를 하거나 부분합을 하거나 정렬을 하거나
엉뚱한 결과를 갖여 오게 된다

아무튼 위와 같이 콤보상자에서 값을 선택하면 자동으로
열을 보기 좋게 옮기고
정렬을 하고
부분합을 하고
그리고 필요없으면 버튼 크릭하여 없애고
라는 일련의 작업을 하나의 프로시져에 담어서 실행시키는것이
메뉴에서 수작업으로 하는것 보다 훨씬 생산성이 높음을 알것이다
자동화는 이렇게 이미 만들어진것을 필요에 따라 적절히
조합하여 필요한 요구를 만족시켜 주는 작업인것이다

아래의 화일에서는..

  • 시트를 필요에 따라서 창의 틀고정을 하면 편리하다
  • Combo상자에 리스트를 한번에 채우는 방법과 순환하면서 채우기를 비교
  • Combo상자 채우기는 워크시트의 Activate이벤트프로시져를 활용한다
  • 범위를 삭제하거나 이동하거나 할때 다른 범위에 영향을 주지 않도록
  • 메소드의 매개변수등이 기억이 나지 않으면 매크로 기록기를 돌려 본다
  • 배열을 사용하는 방법과 Insert메소드를 사용하는 방법의 차이 비교해보면
  • 프로그래밍을 한다면 배열의 이해와 활용은 필수라는것을 알게 된다
  • Range오브젝트 자체가 배열을 받는 그릇이라는것을 이해하면 된다
  • 혹은 그냥 열과 열을 바꿔치기 한다,Variant타입변수가 이럴때 편리하다


SubTotal With Object Method And Array