• 최초 작성일: 2022-12-24
  • 최종 수정일: 2022-12-24
  • 조회수: 1,643 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: X0580 ㅡ 추억의 '생활계획표' 만들기

엑셀러 권현욱

들어가기 전에 ㅡ 살면서 잊어버리는 것들

국민학교(그렇다. 초등학교가 아니라 국민학교다) 시절 우리나라 1인당 GDP는 1800 달러 남짓이었다. 드디어 국민소득이 2000 달러를 넘었다고 좋아하던 어른들을 보며 영문도 모른 채 덩달아 기뻐했던 기억이 어렴풋이 있다. 그러던 것이 21년 기준 1인당 GDP는 35000 달러에 이르렀다. 40여 년 만에 20배 가까이 올랐다. 이런 생각이 문득 들었다.

'우리는 과연 당시에 비해 스무 배 만큼 잘 살고 있는 걸까?'

객관적으로 보면 잘 먹고 잘 살고 있는 것 같긴 하다. 적어도 물질적으로는 그렇다. 하지만 숫자의 증분만큼 잘 사는 것은 아니란 생각을 떨칠 수가 없다.

어린 시절(1970~80년 대 초반)을 잠시 떠올려 본다. 그때는 동네 앞 개울이 수영장이자 빙상장이었다. 마음만 먹으면 언제든 가서 지칠 때까지 즐길 수 있었다. 물론 입장료 같은 것이 있을 리 없고 일체의 비용도 발생하지 않지만, 자유재free goods의 범주에 들어가기에 경제적으로는 무가치한 것으로 간주된다.

지금은 어떤가. 일단 목적지까지 차로 이동해야 한다. 오가는 길에 기름값, 통행료, 간식비 등을 비롯한 여러 가지 비용이 든다. 환경오염은 덤이고 이를 정화하는 데도 비용이 발생한다. GDP에는 이 모든 과정이 반영된다. 교통체증에 따른 스트레스는 고려조차 되지 않았다. GDP는 자원의 고갈을 부의 축적으로 둔갑시켜 버렸다. 불어난 숫자만큼 잘 사는 것 같지 않다는 느낌이 드는 건 아마 그래서일 것이다.

로딩 중...

(이미지 출처: https://gunpill.tistory.com)

국민학교 시절 이맘때면 어김 없이 하던 것이 하나 있다. 방학을 앞두고 생활계획표를 짜는 것. 콤파스와 자, 크레파스를 사용해서 정성스럽게 생활계획표를 만들었었다. 계획표만 잘 만들면 실행은 저절로 될 것만 같았다. 물론 계획과 실행은 별개라는 걸 깨닫기까지는 그리 오래 시간이 걸리지 않았다. 어쨌든...

요즘 초등학생들은 이런 생활계획표를 만드는 지 모르겠지만 엑셀로도 만들 수 있지 않을까 싶어 시도해 보았다. 결과는? 아래에서 직접 확인해 보시길! (^^)



기초 자료 준비

이번 시간에 만들어 볼 완성 예는 이렇습니다. 엑셀의 어떤 기능을 이용하면 이런 모양을 만들 수 있을까요? 답부터 보지 말고 잠시만 생각을...

로딩 중...

완성 예

그렇습니다. 차트를 사용하면 가능합니다. 그림자는 사물의 모양에 기반한 것이듯, 차트는 데이터를 바탕으로 합니다. [완성 예]와 같은 모양을 만들기 위한 기초 자료를 먼저 작성해야 합니다. 구분(B열), 시간(C열), 일정(D열)을 자신의 계획에 따라 입력합니다.

시간(E열)은 D열에 입력한 일정의 경과 시간을 의미합니다. '취침'의 경우 0시부터 6시까지이므로 해당 일정이 시작되는 위치(여기서는 E4 셀)에 6을 입력하거나 아니면 간단한 계산식을 작성해도 됩니다.

E4: =6-0
E10: =7-6

취침 시간은 0시에 시작해서 6시에 끝나니까 '=6-0', 운동은 6시에 시작해서 7시에 끝나므로 '=7-6'이라고 한 겁니다. 같은 방법으로 나머지 일정의 시간에 대해서도 숫자를 채웁니다. 여기서 한 가지 주의할 것은 하루가 24시간이므로 E4:E27 영역에 있는 숫자를 모두 더했을 때 24가 나와야 한다는 점입니다(완성 시트의 E29셀 참조). 하루는 24시간이기 때문이지요.

로딩 중...

완성 예

F열에는 하루 24시간의 각 시간 간격을 나타낼 것이므로 F4:F27 영역에 1을 입력합니다. 합산한 결과가 24가 되는지 검증합니다(완성 시트의 F29셀 참조). 이로써 차트를 만들기 위한 기본 준비는 끝났습니다.

차트 만들기

1. E3:F27 영역을 범위로 지정하고 [삽입] 탭 - [차트] 그룹 - [추천 차트] 명령을 클릭합니다. 엑셀 버전에 따라 메뉴 구성이 조금씩 다를 수 있습니다. 이미지를 참고로 잘 따라오시기 바랍니다.

로딩 중...

2. [차트 삽입] 대화상자에서 [모든 차트] 탭을 선택하고, [원형] - [도넛형] 차트를 선택하고 [확인] 버튼을 클릭합니다.

로딩 중...

3. 범례를 삭제하고 차트 크기를 적당히 조절합니다. 뭔가 오묘한(?) 차트가 만들어졌습니다. 바깥쪽 도넛 차트는 '간격'을, 안쪽은 각 일정에 대한 '시간'을 표시하기 위한 용도로 사용됩니다. 이것이 과연 [완성 예]와 같은 형태로 환골탈태 할 수 있을 것인지에 대한 우려는 있겠지만 아직 갈 길이 많이 남았으니 기다려 보세요.

로딩 중...

4. 바깥쪽 계열('간격')을 선택하고 마우스 오른쪽 버튼을 클릭한 다음 [데이터 레이블 추가]를 선택하면 계열에 레이블이 추가됩니다. 레이블을 마우스 오른쪽 버튼으로 클릭하고 [데이터 레이블 서식] 메뉴를 선택합니다. [데이터 레이블 서식] 작업 창에서 [항목 이름] 앞에만 체크 표시를 합니다.

로딩 중...

5. 바깥쪽 계열은 시간 간격(한 시간 단위)을 표시하기 위한 것이므로 숫자만 있으면 됩니다. 간격 계열을 마우스 오른쪽 버튼으로 클릭하고 [데이터 계열 서식] 메뉴를 선택합니다. [데이터 계열 서식] 작업 창에서 [채우기]와 [테두리]를 없음으로 지정합니다. 여기까지 제대로 했다면 차트는 아래와 같은 형태가 됩니다.

로딩 중...

6. 안쪽 계열('시간')의 구멍 크기를 변경합니다. 안쪽 계열을 마우스 오른쪽 버튼으로 클릭하고 [데이터 계열 서식] 메뉴를 선택합니다. [데이터 계열 서식] 작업 창에서 [계열 옵션] - [도넛 구멍 크기]를 40%로 지정합니다. 값이 커질수록 구멍이 커집니다. 너무 크면 '간격' 계열과 벌어져서 보기에 좋지 않을 수 있습니다.

로딩 중...

7. '시간' 계열을 마우스 오른쪽 버튼으로 클릭하고 [데이터 레이블 추가] 메뉴를 선택하여 레이블을 추가합니다. 레이블을 마우스 오른쪽 버튼으로 클릭하고 [데이터 레이블 서식] 메뉴를 선택합니다. [데이터 레이블 서식] 작업 창에서 [셀 값] 항목을 선택하면 [데이터 레이블 범위] 대화상자가 나타납니다. [데이터 레이블 범위 선택] 항목을 클릭하고 연습 시트의 D4:D27 영역을 범위로 지정합니다. [확인] 버튼을 클릭하고 [데이터 레이블 서식] 작업 창에서 [값] 항목의 체크 표시를 제거하면 차트의 형태가 이렇게 됩니다.

로딩 중...

8. '시간' 계열을 마우스 오른쪽 버튼으로 클릭하고 [데이터 레이블 추가] 메뉴를 선택하여 레이블을 추가합니다. 레이블을 마우스 오른쪽 버튼으로 클릭하고 [데이터 레이블 서식] 메뉴를 선택합니다. [데이터 레이블 서식] 작업 창에서 [셀 값] 항목을 선택하면 [데이터 레이블 범위] 대화상자가 나타납니다. [데이터 레이블 범위 선택] 항목을 클릭하고 연습 시트의 D4:D27 영역을 범위로 지정합니다. [확인] 버튼을 클릭하고 [데이터 레이블 서식] 작업 창에서 [값] 항목의 체크 표시를 제거하면 차트의 형태가 이렇게 됩니다.

로딩 중...

9. 차트 제목을 입력하고 도형 개체를 삽입하여 도넛 가운데에 '생활계획표'라고 입력합니다. 여기까지만 해도 살짝 아쉬운 대로 생활계획표를 엑셀로 구현할 수 있습니다. VBA를 이용하면 [완성 예]와 같이 색상을 정돈해서 좀 더 세련된(?) 형태로 만들 수 있습니다.

로딩 중...

생활계획표 업그레이드하기

1. VBA를 이용하여 도넛 차트의 색상을 자동으로 변경해 보겠습니다. G열에 일정별로 색상을 지정합니다. 유사한 일정에는 같은 색상을 지정하고 글자색이 검정색이므로 배경색은 너무 어둡지 않은 색을 고르는 것이 좋겠습니다.

로딩 중...

2. 워크시트 상태에서 ALT + F11 키를 눌러서 Visual Basic EditorVB Editor를 호출합니다.

3. VB Editor에서 [삽입] - [모듈] 메뉴를 선택하여 모듈을 하나 삽입하고 코드를 작성합니다. VBA 강의 시간이 아니므로 코드에 대한 설명은 따로 하지 않겠습니다. 아래 코드를 복사하여 앞에서 삽입한 모듈에 붙여넣기 하세요.

Sub setChartColor()
    ''' 변수 선언
    Dim shtX As Worksheet
    Dim oCht As Chart
    Dim oPoint As Point
    Dim rColor As Range
    Dim rX As Range
    Dim vColor()
    Dim i As Integer
    
    ''' 변수에 값 할당
    On Error Resume Next
    Set shtX = ActiveSheet
    Set oCht = shtX.ChartObjects(1).Chart
    Set rColor = shtX.Range("B3").CurrentRegion
    Set rColor = rColor.Offset(1).Resize(rColor.Rows.Count - 1).Columns(6)
    
    ''' F열의 각 셀에 지정된 색상 번호를 동적 배열 변수 vColor에 저장
    For Each rX In rColor.Cells
        If IsNumeric(rX.Offset(, -2)) Then
            ReDim Preserve vColor(i)
            vColor(i) = rX.Interior.Color
            i = i + 1
        End If
    Next

    ''' 동적 배열 변수에 저장된 색상 값을 차트 계열의 각 Point 색상으로 지정
    i = 0
    For Each oPoint In oCht.SeriesCollection(1).Points
        With oPoint
            .Interior.Color = vColor(i)
            .Border.Color = vColor(i)
        End With
        i = i + 1
    Next
End Sub

CODE

4. 워크시트로 가서 차트를 마우스 오른쪽 버튼으로 클릭하고 [매크로 지정] 매뉴를 선택합니다.

5. [매크로 지정] 대화상자가 나타나면 앞에서 작성한(또는 붙여넣은) 매크로를 지정하고 [확인] 버튼을 클릭합니다.

로딩 중...

6. 이제 차트를 클릭하면 매크로가 실행됩니다. G열에 지정한 색상과 같은 것으로 차트 계열의 요소도 연동되는 것을 확인할 수 있습니다. 매크로를 차트에 연결하지 않고 버튼을 이용하거나 다른 방식을 적용하는 것도 물론 가능합니다.

로딩 중...

Chart 개체와 Color 속성은 엑셀 버전에 따라 크고 작은 변화가 있었습니다. 각자가 사용하는 엑셀 버전이 다르기에 On Error Resume 명령을 사용하여 오류가 발생하더라도 일단 다음 구문으로 넘어가도록 하였습니다. 예전 엑셀 버전에서는 제대로 작동하지 않을 수도 있으니 참고하세요.

올해가 얼마 남지 않았습니다. 한 해 마무리 잘 하세요. 2023년 계묘년 검은 토끼의 해에는 즐겁고 행복한 일들이 좀 더 많았으면 좋겠습니다. Happy New Year~~

#엑셀_차트 #생활계획표 #Chart #도넛차트