목차
지난번 포스트 : 고객 만족도 그래프 IPA(Importance-Performance Analysis)에 대한 설명
위 포스트에서 IPA 그래프에 대해서 간략하게 이야기 해봤습니다.
그런데 이 그래프가 전용툴을 쓰지 않으면 생각보다 그리기 까다로워 대충 만들게 됩니다.
IPA 그래프를 엑셀로 그리는 방법과 VBA로 만든 파일을 이 번 포스팅에서 올려보겠습니다.

1. 엑셀로 그리는 법
① 데이터를 먼저 준비합니다.
이건 사전에 조사해서 넣어야 합니다.
지표는 점수로 나타낼 수도 있고, 아니면 순위나 평균 등등 산출된 수치로도 가능합니다.
첫번째는 항목명, 두번째는 x축에 들어갈 성과지표, y축에는 중요도를 넣습니다.

② 빈 셀을 하나 선택하고 분산형 차트를 만듭니다.
주변에 데이터가 없는 빈셀을 하나 선택하고 분산형 차트를 만듭니다.
그럼 빈차트가 하나 생기게 되는데 여기에 오른쪽 클릭을 해서 데이터 선택으로 들어갑니다.

③ 데이터 "추가"를 선택합니다.
범례 항목(계열)에서 "추가"를 선택하연 "계열 편집"창이 열립니다.
그럼 준비한 계열이름 하나와 x, y 값을 하나씩 입력합니다.
하나만 입력하고 확인을 클릭합니다.

④ 하나씩 입력해서 항목 늘리기
전부 하나씩 "추가"를 클릭해서 입력해서 항목을 만듭니다.
그럼 아래 그림처럼 데이터의 목록이 생깁니다.
작업방법은 여러가지가 있겠지만 한방으로는 이렇게 만들기 힘들고 하나하나 입력하는 쪽이 편합니다.

서식을 넣어서 마무리하면 맨위에 있는 그래프처럼 됩니다.
이게 상당히 귀찮다는 생각이 들었습니다.
특히 항목수가 많아지고 일상적으로 그린다면 뭔가 하나 있으면 좋겠죠
2. VBA로 그리기(파일 포함)
간략하게 만들었습니다.
세로로 작성해야 하고 첫 줄에는 제목, 둘째는 X축 세번째는 Y축에 들어갈 데이터를 선택합니다.
갯수는 상관 없이 선택한 상태에서 옆의 버튼을 누릅니다.

그려진 파일에는 기본적인 서식은 추가했습니다.
디자인은 알아서 해서 사용하도록 합시다.
이 정도도 많이 편하다고 생각합니다.

그럼 코드를 알아보겠습니다.
Sub CreateIPA()
Dim rng As Range
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim series As series
Dim i As Integer
'선택한 영역을 rng 변수에 저장
Set rng = Selection
Set ws = ActiveSheet
'선택된 영역의 첫 줄을 제목으로, 두 번째 줄을 X 값으로, 세 번째 줄을 Y 값으로 사용
Dim titleRange As Range
Dim xValuesRange As Range
Dim yValuesRange As Range
Set titleRange = rng.Columns(1)
Set xValuesRange = rng.Columns(2)
Set yValuesRange = rng.Columns(3)
'차트 객체를 추가
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=50, Height:=225)
'분산형 차트 그리기
With chartObj.Chart
.ChartType = xlXYScatter
.HasTitle = True '제목 설정하기
.ChartTitle.Text = "IPA 그래프 그리기"
.Axes(xlCategory, xlPrimary).HasTitle = True 'x축 제목 설정하기
.Axes(xlCategory, xlPrimary).AxisTitle.Text = "성과(Performance)"
.Axes(xlValue, xlPrimary).HasTitle = True 'y축 제목 설정하기
.Axes(xlValue, xlPrimary).AxisTitle.Text = "중요도(Importance)"
'각 열을 반복하며 범주 추가
For i = 1 To titleRange.Rows.Count
Set series = .SeriesCollection.NewSeries '새로운 범주 설정하기
series.Name = titleRange.Cells(i, 1).Value '항목 하나의 제목을 입력하기
series.xValues = xValuesRange.Cells(i, 1).Value '항목 하나의 x 값을 입력하기
series.Values = yValuesRange.Cells(i, 1).Value '항목 하나의 y 값을 입력하기
series.MarkerStyle = xlMarkerStyleCircle '표식 모양 동그라미
series.MarkerSize = 10 ' 표식 크기 10
series.HasDataLabels = True '레이블 만들기
series.DataLabels.ShowValue = False
series.DataLabels.ShowSeriesName = True '레이블에 항목제목 적용하기
series.DataLabels.Position = xlLabelPositionAbove '레이블을 위로 설정
Next i
End With
' 메모리를 비워서 정리
Set chartObj = Nothing
Set rng = Nothing
Set titleRange = Nothing
Set xValuesRange = Nothing
Set yValuesRange = Nothing
Set series = Nothing
End Sub
<코드 동작 순서>
선택한 객체인 Selection으로 rng 변수에 할당합니다.
선택한 행별 데이터를 첫번째 두번째 세번째로 titleRange, xValuesRange, yValuesRange 변수에 배열로 입력합니다.
분산형 차트의 코드는 xlXYScatter입니다.
그런 후 for 문을 사용해서 각각의 데이터로 항목을 만들고 주변에 명령어로 서식을 입력합니다.
코드가 조금 길지만 서식 항목이 많아서 그렇지 별거 없습니다.
'엑셀' 카테고리의 다른 글
엑셀(EXCEL) VBA에서 동일한 양식에서 한 셀의 내용만 바꿔가면서 인쇄하기(한 글자만 변경해 가면서 인쇄하기, 예제 파일 포함) (0) | 2024.09.25 |
---|---|
엑셀(EXCEL) 가장 가까운 홀수 혹은 짝수로 올려주는 ODD 함수와 EVEN 함수 (0) | 2024.09.24 |
엑셀(EXCEL), 셀에 있는 함수 내용 추출하는 FORMULATEXT 함수와 VBA의 코드 작성 (0) | 2024.08.15 |
엑셀(EXCEL)의 윗주 기능으로 텍스트에 메모를 남기고 읽어내는 PHONETIC 함수에 대해서 알아봅시다. (0) | 2024.08.14 |
이진연산을 알아보고 엑셀(EXCEL)에서 연산을 실행하는 함수들 BITAND, BITOR, BITXOR에 대해서 알아봅시다. (0) | 2024.08.06 |