|
▼みん さん:
ponponです。こんにちは。
回答するのは初めてです。すぐ下の質問をしている者です。
参考になればと思って回答しました。
昨日と今日で同じようなことを考えて、作っているところです。
データが下のようにA2から入っていることを前提として、
>
>No 氏名 国語 算数 理科 合計 平均 順位
>1 はなこ 89 90 78 257 85.5 1
>2 ようこ 56 61 78 195 65.0 3
>3 ひとみ 78 89 69 236 78.6 2
>
以下のコードを実行すると、
一覧表の横のスペースに全員のレーダーチャートが表示されます。
教科は、国語、算数、理科の3教科でよいのですね?
3角形のレーダーチャートになります。
新しいシートに一人ずつ出力するするのは、まだ勉強不足でできていません。
また、得点や学年平均、偏差値についてはレーダーチャートを作るときに、ループさせるので、そのときにセルを指定し、offsetさせて、新しく作ったsheetにセルを指定し表示させてやればよいと思います。
以下コードです。標準モジュールにコピペして、使用してください。
シートをアクティブにして実行してください。
グラフのできる位置や、色は自分で変えてください。
Sub test()
Dim i As Integer
Dim t As Integer
Dim m As Long
m = Range("A65536").End(xlUp).Row
For i = 2 To m
t = ((i - 2) \ 4) * 200
With ActiveSheet.ChartObjects.Add(Left:=500 + ((i - 2) Mod 4) * _
200, Top:=t + 9, Width:=200, Height:=200).Chart
.SetSourceData Source:=Union(Range(Cells(1, 2), Cells(1, 5)), _
Range(Cells(i, 2), Cells(i, 5))), PlotBy:=xlRows
.ChartType = xlRadarFilled
.SeriesCollection(1).Interior.ColorIndex = 4
.HasLegend = False
With .PlotArea
.Interior.ColorIndex = 36
.Left = 33
.Top = 40
.Width = 130
.Height = 130
End With
With .Axes(xlValue)
.MajorGridlines.Border.ColorIndex = 3
.MinimumScale = 0
.MaximumScale = 100
.MinorUnit = 5
.MajorUnit = 20
.Crosses = xlAutomatic
.ScaleType = xlLinear
.DisplayUnit = xlNone
.TickLabels.NumberFormatLocal = "0_ "
End With
End With
Next
End Sub
'************************************************************************
Sub グラフの削除()
Dim CH As ChartObject
ActiveSheet.Unprotect
Set allCH = ActiveSheet.ChartObjects
For Each CH In allCH
CH.Delete
Next
End Sub
|
|