Excel VBA에서 꺾은선형 차트를 동적으로 만들고 싶습니다.
「일단 움직였다」정도의 소스등도 있으므로 참고 정도에 브러시 업 받을 수 있으면 다행입니다.
또, 잘못이나 더 좋은 코딩이나 예쁜 쓰는 방법이 있는 등 지적 받을 수 있으면 매우 기쁩니다.
이번 주제
Excel에서 데이터 분석을 할 때 시각화를 수행하고 싶은 선 그래프로 만들려고합니다.
요점은
이런 느낌으로 시작할까 생각합니다.
대상 데이터는
서버의 리소스 상황을 과정에서 다음과 같이 되어 있습니다.
서버 X 시트
날짜
용량(MB)
사용량(MB)
잔량(MB)
사용률(%)
2019/9/1
51,200
31,825
19,375
62%
2019/9/2
51,200
33,625
17,575
66%
2019/9/3
51,200
34,570
16,630
68%
이러한 데이터를 3 시트 준비했습니다.
그럼 소스입니다.
Module1
Option Explicit
Sub btnPush()
Dim ServerNames() As String
Dim ServerName As Variant
Dim loopCnt As Integer
ServerNames = Split("サーバA;サーバB;サーバC", ";")
' グラフを追加
ActiveSheet.Shapes.AddChart.Select
' グラフの種類を指定(折れ線グラフ)
ActiveChart.ChartType = xlLine
' 一度グラフの書式をクリア
ActiveChart.ClearToMatchStyle
' グラフのテーマを指定
ActiveChart.ChartStyle = 227
loopCnt = 1
' サーバ数分ループ
For Each ServerName In ServerNames()
' 新しい系列を追加
ActiveChart.SeriesCollection.NewSeries
' 系列名を指定
ActiveChart.FullSeriesCollection(loopCnt).Name = "=""" & ServerName & """"
' 系列値を指定(縦軸)
ActiveChart.FullSeriesCollection(loopCnt).Values = "=" & ServerName & "!$F$3:$F$12"
' 項目を指定(横軸)
ActiveChart.FullSeriesCollection(loopCnt).XValues = "=" & ServerName & "!$B$3:$B$12"
loopCnt = loopCnt + 1
Next ServerName
' グラフをアクティブにする
ActiveSheet.ChartObjects(1).Activate
' グラフタイトルの表示
ActiveChart.SetElement (msoElementChartTitleAboveChart)
' グラフタイトルの指定
ActiveChart.ChartTitle.Text = "リソース推移"
' 凡例の非表示
ActiveChart.SetElement (msoElementLegendNone)
' データラベルを非表示
ActiveChart.SetElement (msoElementDataLabelNone)
' グラフの最小値の指定
ActiveChart.Axes(xlValue).MinimumScale = 0 / 100 ' 元データがパーセンテージの為、100分の1に
' グラフの最大値の指定
ActiveChart.Axes(xlValue).MaximumScale = 100 / 100 ' 元データがパーセンテージの為、100分の1に
' データラベルを表示する為、右端を空ける
ActiveChart.PlotArea.Width = ActiveChart.PlotArea.Width - 35
' 右端にデータラベルを表示
' 系列数分ループ
For loopCnt = 1 To ActiveChart.SeriesCollection.Count
With ActiveChart.SeriesCollection(loopCnt)
' 系列の一番最後のポイントを選択
.Points(.Points.Count).Select
' データラベルの表示
ActiveChart.SetElement (msoElementDataLabelCallout)
' 系列名表示
.Points(.Points.Count).DataLabel.ShowSeriesName = True
' 分類名非表示
.Points(.Points.Count).DataLabel.ShowCategoryName = False
' 系列値非表示
.Points(.Points.Count).DataLabel.ShowValue = False
' 凡例マーカー非表示
.Points(.Points.Count).DataLabel.ShowLegendKey = False
' データラベルの背景色を凡例マーカーの色に合わせる
.Points(.Points.Count).DataLabel.Format.Fill.ForeColor = .Format.Line.ForeColor
' データラベルを選択
.Points(.Points.Count).DataLabel.Select
End With
' データラベルの表示位置を調整(気持ち右下に表示)
Selection.Left = 10 + Selection.Left
Selection.Top = 10 + Selection.Top
Next loopCnt
End Sub
완성
아래와 같은 그래프가 완성됩니다. (Excel 버전에 따라 그늘이 달라집니다.)
Reference
이 문제에 관하여(Excel VBA에서 꺾은선형 차트를 동적으로 만들고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuki_hamatake/items/0a77c32964f43641490c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)