• 최초 작성일: 2008-11-02
  • 최종 수정일: 2008-11-04
  • 조회수: 61,459 회
  • 작성자: 엑셀러 권현욱
  • 강의 제목: 레이더 차트 응용 ㅡ 케로로와 친구들 전투력 비교

엑셀러 권현욱

들어가기 전에 ㅡ 삶의 원칙

가을이 깊어져 갑니다. 어느덧 11월로 접어들었군요.

사람들이 하는 말 중에서 가장 슬픈 단어는 '그때 만약 ~~ 했더라면'이라는군요. 후회하지 인생을 살기 위해, 이 말을 '지금부터는 ~~ 하겠다'로 바꿔보도록 노력해야 하겠습니다.

진정한 여행 (나짐 히크메트)

가장 훌륭한 시는 아직 씌어지지 않았다.
가장 아름다운 노래는 아직 불려지지 않았다.

최고의 날들은 아직 살지 않은 날들
가장 넓은 바다는 아직 항해되지 않았고
가장 먼 여행은 아직 끝나지 않았다.

불멸의 춤은 아직 추어지지 않았으며
가장 빛나는 별은 아직 발견되지 않은 별

무엇을 해야할 지 더 이상 알 수 없을 때
그때 비로소 진정한 무엇인가를 할 수 있다.

어떤 길로 가야할 지 더 이상 알 수 없을 때
때가 비로소 진정한 여행의 시작이다.

ㅡ <사랑하라 한번도 상처받지 않은 것처럼>, 류시화

늘 이맘때면 인생의 본질적인 것들에 대해 생각해 보게 됩니다. 자신의 삶을 지배하는 원칙에 대해 한번쯤 생각해 보는 것도 좋겠습니다.


Table Of Contents


완성 예

얼마 전까지 준우(Exceller 주니어)의 장래희망은 '개구리 중사 케로로'가 되는 것이었습니다(지금은 '파워레인저 트레져포스'가 되겠다는군요. -_-;). 준우와 함께 케로로를 보면서 놀다가 이런 것을 만들어 보았습니다. 이름하야 '케로로와 친구들 전투력 비교 차트'입니다.

로딩 중...

완성 예

작성 과정

1. 만드는 방법은 아주 간단합니다. 예제 파일을 열고 '비교차트 만들기' 버튼을 클릭하면 4개의 레이더 차트(다른 말로 '방사형' 차트)가 좌르륵~ 만들어집니다.

로딩 중...

2. '완성 예'와 같은 형태를 만들기 위해 이름 정의를 먼저 해 두고 진행합니다. B10:E19 영역을 범위로 지정하고 '셀 병합' 합니다. F10:I19, B20:E29, F20:I29 영역들에 대해서도 [셀 병합]을 한 다음, 각각의 영역에 Chart1 ~ Chart4라는 이름을 지정합니다.

3. 레이더 차트를 작성할 때 사용되는 B2:F8 영역에 대해서 'Source'라는 이름도 지정해줍니다.

4. VB Editor에서(ALT + F11) [삽입] - [모듈] 메뉴를 이용하여 모듈을 하나 삽입하고 다음과 같은 코드를 작성합니다. 엑셀 2007 버전에 맞게 작성된 것이므로 그 이전 버전에서는 제대로 작동하지 않을 수 있습니다. 많이 다르진 않고 색상 표현과 관련된 일부 오브젝트에서 차이가 있습니다.

Sub CompareRadar()
    ' 등장인물들과 배역을 설정합니다(변수 정의).
    Dim rngSource As Range
    Dim i As Integer
    Dim strSheetName As String

    Set rngSource = Range("Source")
    Application.ScreenUpdating = False
    On Error Resume Next

    ' 현재 시트에 이미 만들어진 차트가 있다면 지웁니다. 만약 차트가 없다면 오류가 발생아므로
    ' On Error Resume Next 구문을 추가하였습니다.
    ActiveSheet.ChartObjects.Delete

    strSheetName = ActiveSheet.Name

    ' 몇 명의 전투력을 비교할 것인지 순환횟수를 지정합니다.
    For i = 1 To rngSource.Columns.Count - 1
        Charts.Add

        ' 차트의 종류, 원본 데이터, 차트를 이동할 위치 등을 지정합니다.
        With ActiveChart
            .ChartType = xlRadarFilled
            .SetSourceData Worksheets(strSheetName). _
                Range(rngSource.Columns(1).Address _
                & "," & rngSource.Columns(i + 1).Address)
            .Location xlLocationAsObject, strSheetName
        End With

        ' 차트를 삽입할 위치를 지정합니다.
        ' 변수 i 값을 통해 각 차트별로 위치를 다르게 지정합니다.
        With ActiveSheet.ChartObjects(i)
            .Top = Range("Chart" & i).Top
            .Left = Range("Chart" & i).Left
            .Width = Range("Chart" & i).MergeArea.Width
            .Height = Range("Chart" & i).MergeArea.Height
        End With

        ' 삽입한 차트의 각종 서식을 지정합니다.
        ' 생소한 오브젝트나 메서드, 속성 등에 대해서는 도움말을 통해 확인하세요.
        With ActiveChart
            .SeriesCollection(1).Fill.OneColorGradient _
                Style:=msoGradientHorizontal, _
                Variant:=1, Degree:=0.9
            .SeriesCollection(1).ApplyDataLabels
            .Legend.Delete
            .ChartStyle = 30
            .SetElement (msoElementChartTitleCenteredOverlay)

            With .SeriesCollection(1).DataLabels
                .Font.ColorIndex = 3
                .Font.Bold = True
                .Interior.ColorIndex = 6
            End With
            With .ChartTitle
                .Font.Size = 12
                .Left = 0
                .Top = 0
            End With
            With .Axes(xlValue)
                .MajorGridlines.Border.LineStyle = xlDot
                .MaximumScale = 10
            End With
        End With
    Next i

    rngSource.Cells(1).Select
    Application.ScreenUpdating = True
    MsgBox "전투력 비교시트 작성이 완료되었습니다!"
End Sub

CODE

5. 워크시트로 돌아가서 [양식 컨트롤]의 [단추] 컨트롤을 하나 삽입하고 오른쪽 마우스 버튼을 클릭한 다음 [매크로 지정] 메뉴를 선택합니다.

로딩 중...

완성 예

6. [매크로 지정] 대화상자에서 [매크로 이름] 항목을 보면 앞에서 작성한 'CompareRadar' 프로시저가 나타나는데 이것을 선택하고 [확인] 버튼을 클릭합니다. 이제 이 버튼을 클릭할 때마다 레이터 차트들이 자동으로 생성됩니다.

엑셀 강의 시간에 웬 VBA야. 이건 배쉰이야 배쉰!!

이렇게 생각하는 분이 모쪼록 없기를 바랍니다. 결국 매크로나 VBA도 우리가 넘어야 할 산입니다.^^

다음 시간에 또...