• 최초 작성일: 2002-03-26
  • 최종 수정일: 2026-09-30
  • 조회수: 10 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 측정할 수 있으면 개선된다

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

오래간만에 좀 얄궂은(?) 제목을 한번 붙여 보았습니다. 강좌와는 관련이 적어 보입니다만, 요즘 Exceller가 하고 있는 고민을 잘 대변해 주는, 가슴에 와 닿는 문구인지라라 제목으로 인용해 보았습니다. 아래 글은 한국 리더십 센터 소장으로 계시는 한근태 박사님의 글입니다.

글의 내용을 간추려 옮기면 다음과 같습니다.

품질, 납기, 원가 문제로 고민하는 회사가 있었습니다. 사업부장부터 대리에 이르기까지 입만 열면 품질 문제를 이야기합니다. 설계가 늦고 질이 떨어져 시제품을 만드는 데 애를 먹는다, 협력업체 수준이 낮아 부품 품질이 엉망이다, 작업 표준이 제각각이라 불량이 많다는 식으로 불만은 많지만 "그래서 얼마나(how much)?"라고 물으면 모두 대답을 하지 못합니다. 눈으로 보고 귀로 들으며 막연히 그럴 것이라고 생각했을 뿐 그것을 증명할 데이터를 만들지 않았기 때문입니다. 어느 부품이, 어느 업체가, 설계의 어떤 부분이 얼마나 문제인지 알아야 해결 방법이 나오는데 데이터 없이 말로만 떠들어대니 개선이 되지 않습니다.

또 다른 공장에서는 작업 중에 운동화를 꾸겨 신는 사람이 많았습니다. 300명이 넘는 인원이다 보니 잔소리도 한두 번이고 작업반장 10여 명에게 여러 번 당부해도 효과가 없었습니다. 그래서 직장별로 총 몇 명 중 꾸겨 신은 사람이 몇 명, 몇 퍼센트인지 조사하게 하고 매일 작업이 끝난 후 그 데이터를 공개하면서 상태가 좋지 않은 직장에는 이유를 묻고 대책을 요구했더니 며칠 뒤 운동화를 꾸겨 신는 사람이 공장에서 자취를 감추었다는 이야기입니다.

세상에는 측정 가능한 것과 그렇지 못한 것이 있습니다. 물건을 몇 개 팔았는지, 사람이 얼마나 지나다니는지는 쉽게 측정할 수 있지만 물건이나 사람이 좋고 나쁜지, 품질이 어떤지는 측정하기 어렵습니다. 하지만 측정이 어렵다고 불가능한 것은 아니며 어려울수록 측정할 방법을 강구하면 큰 효과가 있습니다. 예를 들어 리더십 프로파일 프로그램은 교육 전에 상사, 동료, 부하에게 평가 시트를 받아 분석한 뒤 교육 중간에 알려주는데, 자신이 생각하는 자기 모습과 주변 사람들이 생각하는 모습의 큰 차이에 많은 사람들이 충격을 받는다고 합니다. 선진국에서는 QFD(quality function deployment)라는 기법으로 소비자의 막연한 이야기와 피드백을 엔지니어링 수치로 바꾸어 상품 경쟁력을 높이고 있습니다.

측정할 수 있는 것은 데이터로 수치화하고, 측정하기 어려운 것도 측정할 수 있게끔 방법을 강구하며, 모든 일을 데이터를 가지고 추진하는 것이 경쟁력의 원천이 아닐까 하는 이야기이며, "측정할 수 있으면 개선된다"는 것이 21세기 가장 중요한 화두라고 이 글은 맺고 있습니다.

이 글은 한국 리더십 센터 소장이신 한근태 박사님께서 쓰신 글입니다.

아니 그렇다면 Exceller가 현장 작업반장이라도 되었단 말인가? 하는 분이 계실 것입니다. 물론 현장 작업반장이 된 것은 아니고... 어떻게 하면 보이지 않는 것을 측정하고 거기서 한걸음 더 나아가 개선을 유도할 것인가 하는 측면에서 위와 비슷한 고민을 하고 있답니다. ^^ QFD를 도입하고 Depth Interview를 하고 하여도 아직은 별 묘안이 떠오르지 않는군요.

사설은 이쯤에서 접도록 하고…

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

측정할 수 있으면 개선된다

핵심 요약: 선택한 셀에 따라 바뀌는 차트

SelectionChange 이벤트에서 현재 셀의 행 데이터와 항목명(Title)을 Union으로 묶어 차트 원본으로 지정하면 클릭하는 셀에 따라 갱신되는 차트를 만들 수 있습니다.

  • 1단계: 원본 데이터로 차트를 만들고 옵션을 미리 지정합니다.
  • 2단계: Source, Title 이름과 안내용 텍스트 박스(Message)를 준비합니다.
  • 3단계: SelectionChange에서 Intersect로 유효 영역을 판별하고 차트 원본과 제목을 바꿉니다.

Step 1: 차트를 조금 더 똑똑하게

우리가 흔히 사용하는 차트를 조금 더 똑똑하게 만들어 볼까요? 아래 버튼을 누르신 다음 시트 이곳 저곳을 클릭해 보세요.

유효한 영역을 클릭했을 경우에는 선택된 셀(ActiveCell)의 항목별 고객만족도 조사 결과가 표시되고…

[그림 1] 유효한 영역을 선택했을 경우

유효한 영역을 선택하면 해당 지역의 고객만족도 조사 결과가 차트로 표시된 화면
아이엑셀러

그렇지 않은 경우, 즉 차트를 생성할 수 없는 위치를 클릭하면 에러 메시지가 나타나면서 차트가 표시되지 않을 것입니다.

[그림 2] 유효하지 않은 영역을 선택하였을 경우

유효하지 않은 영역을 선택하여 안내 메시지만 표시된 화면
아이엑셀러

요즘 회사나 세미나장 같은 곳에서 프리젠테이션을 할 때 파워포인트를 많이들 사용합니다. 이런 경우에 슬라이드를 엑셀과 연결해서 사용하면 보다 역동적이고 Impact한 프리젠테이션이 될 것입니다.

Step 2: 만드는 순서

(1) 소스 데이터를 이용하여 차트를 만듭니다. 이 때 차트의 옵션값을 적당히 지정하여 원하는 형태로 미리 만들어 둡니다. 물론 VBA로 차트 오브젝트의 각종 속성값을 변경할 수도 있지만 쓸데없이 코드를 복잡하게 할 필요는 없겠지요.

(2) VB Editor 상태에서 프로젝트 탐색창을 더블 클릭하고 코드 창에서 SelectionChange 이벤트를 선택한 다음 아래와 같은 코드를 작성합니다.

프로젝트 탐색창에서 WorkPlace 시트 오브젝트를 선택한 화면
아이엑셀러
코드 창 상단 드롭다운에서 SelectionChange 이벤트를 선택하는 화면
아이엑셀러
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim chtChartObject As ChartObject
    Dim chtChart As Chart
    Dim i As Integer
    Dim chtChartTitle As Range
    Dim rngThat As Range
    Dim rngSource As Range
    Dim rngTarget As Range
    Dim txtMsg As TextBox
    Dim strArea As String
    Set txtMsg = ActiveSheet.TextBoxes("Message")
    '''위에서 유효하지 않은 영역을 선택하면 에러 메시지가 나타났었지요? 이것은 텍스트 박스를
    '''워크시트 상에 미리 하나 그려 놓은 다음 텍스트 박스의 선과 배경색을 '없음'으로 지정하여
    '''자동으로 나타나는 것처럼 보이도록 해 준 것입니다.

    '''텍스트 박스에 이름을 정의해 둔 것 이외에도 미리 이름을 정의해 둔 것이 두개 더 있습니다.
    '''아래에서 보면 Source라는 것과 Title이라는 영역이 바로 그것입니다. 어떤 영역인지는
    '''이름 상자나 '삽입-이름' 메뉴를 사용하여 직접 확인해 보시기 바랍니다.

    Set rngTarget = [Source]
    Set chtChartObject = ActiveSheet.ChartObjects(1)
    Set chtChart = chtChartObject.Chart
    i = ActiveCell.Row

    If Application.Intersect(rngTarget, ActiveCell) Is Nothing Or ActiveCell.Row = [Title].Row Then
    '''Intersect 메서드를 사용하여 현재 선택한 셀이 유효한 영역인지 아닌지를 검사합니다.
    '''Intersect 메서드의 결과값이 Nothing이라는 말은 지정한 영역 내에 없다는 말이 되므로
    '''차트 오브젝트의 Visible 프로퍼티 값을 False로 지정합니다. 그러면 차트가 보이지 않게 됩니다.
    '''그리고는 미리 작성해 둔 텍스트 박스가 나타나도록 하는 것이지요.

        chtChartObject.Visible = False
        txtMsg.Visible = True
    Else
    '''그렇지 않으면… 즉 현재 선택한 셀이 유효한 영역 내에 있다면 아래의 코드를 실행합니다.
    '''위와는 반대로 이번에는 텍스트 박스를 숨기고 차트 오브젝트를 보이도록 합니다.

        txtMsg.Visible = False
        Set chtChartTitle = [Title]
        Set rngThat = Range(Cells(i, 1), Cells(i, 1).End(xlToRight))
        strArea = rngThat.Cells(1) & "지역 고객만족도 조사 결과"
        Set rngSource = Union(chtChartTitle, rngThat)
        '''서로 떨어져 있는 영역을 가지고 차트를 작성하기 위해 Union 메서드를 사용한 것을 눈여겨
        '''보시기 바랍니다.

        chtChart.SetSourceData Source:=rngSource, PlotBy:=xlRows
        chtChartObject.Visible = True

        With ChartObjects(1).Chart
        '''차트 오브젝트의 타이틀을 현재 선택한 셀의 지역명과 일치시켜주기 위한 작업입니다.

            .HasTitle = True
            .ChartTitle.Text = strArea
        End With
    End If
End Sub

위에서 유효하지 않은 영역을 선택하면 에러 메시지가 나타났었지요? 이것은 텍스트 박스를 워크시트 상에 미리 하나 그려 놓은 다음 텍스트 박스의 선과 배경색을 '없음'으로 지정하여 자동으로 나타나는 것처럼 보이도록 해 준 것입니다. 텍스트 박스에 이름(Message)을 정의해 둔 것 이외에도 미리 이름을 정의해 둔 것이 두 개 더 있습니다. 아래에서 보면 Source라는 것과 Title이라는 영역이 바로 그것입니다. 어떤 영역인지는 이름 상자나 '삽입-이름' 메뉴를 사용하여 직접 확인해 보시기 바랍니다.

Intersect 메서드를 사용하여 현재 선택한 셀이 유효한 영역인지 아닌지를 검사합니다. Intersect 메서드의 결과값이 Nothing이라는 말은 지정한 영역 내에 없다는 말이 되므로 차트 오브젝트의 Visible 프로퍼티 값을 False로 지정합니다. 그러면 차트가 보이지 않게 됩니다. 그리고는 미리 작성해 둔 텍스트 박스가 나타나도록 하는 것이지요. 그렇지 않으면, 즉 현재 선택한 셀이 유효한 영역 내에 있다면 이번에는 텍스트 박스를 숨기고 차트 오브젝트를 보이도록 합니다. 서로 떨어져 있는 영역을 가지고 차트를 작성하기 위해 Union 메서드를 사용한 것을 눈여겨 보시기 바랍니다. 마지막으로 차트 오브젝트의 타이틀을 현재 선택한 셀의 지역명과 일치시켜 줍니다.

다음 시간에 또…

정리 — ActiveCell 연동 차트 핵심

구분 사용한 코드 역할
영역 판별 Application.Intersect(rngTarget, ActiveCell) 유효한 영역인지 검사
차트 표시/숨김 ChartObject.Visible = True/False 차트 보이기/숨기기
안내 메시지 TextBoxes("Message").Visible 유효하지 않은 영역 안내
원본 지정 Union(Title, rngThat) 떨어진 영역을 묶어 원본으로
차트 갱신 SetSourceData Source, PlotBy:=xlRows 원본 변경

자주 묻는 질문 (FAQ)

Q1. 왜 Union 메서드를 사용하나요?

항목명이 있는 제목 행과 선택한 지역의 데이터 행처럼 서로 떨어져 있는 영역을 하나의 차트 원본으로 묶기 위해서입니다.

Q2. 유효하지 않은 영역을 클릭하면 어떻게 되나요?

Intersect 결과가 Nothing이므로 차트를 숨기고 미리 그려 둔 텍스트 박스를 표시합니다.

Q3. 파워포인트 프레젠테이션에서도 활용할 수 있나요?

슬라이드를 엑셀과 연결해 사용하면 보다 역동적이고 임팩트 있는 프레젠테이션을 만들 수 있습니다.

마치며

측정할 수 있는 것은 데이터로 보여 주고 차트를 조금 더 똑똑하게 만들면 프레젠테이션의 임팩트도 커집니다.