VBA初心者です。今回VBAでグラフを作ろうと思っています。皆様力をお貸しください。
今回作ろうと思っているのは自分の点数がクラスの中でどの位置(偏差値はどの程度か)にいるのか、視覚的に把握するようなものです。イメージ図を添付しておきます。
○の部分が自分の所属しているところで、σが標準偏差になります。
仮に40名の点数と偏差値が計算してあるとして、図のような点数や偏差値に対応したグラフを作成することは可能でしょうか?
また、点数を入力する画面を設けた場合(これはできました)、自分の点数を入力すればその点数に応じた場所に○をプロットすることはできますでしょうか?
回答よろしくお願いいたします。
No.2
- 回答日時:
暇に飽かせてやってみました。
VBAは一切使用せず、グラフの機能と根気だけでやっております。
理解の助けになる様に、添付図はあえて途中段階で止めてあります。
要するに、データラベル表示用の系列を1個加えて、点毎にデータラベルを変更し、位置をY軸の左に移動しています。ラベル表示用の系列のマーカーは当然非表示にします。
本来のY軸の数字は、書式を""にする事で非表示にしています。
散布図の点の色も人力でコツコツと変更しています。
VBAで楽にやりたければ、下記#3、#4がご参考になるかもしれません。
http://oshiete.goo.ne.jp/qa/7524408.html
以上ご参考まで。
No.3
- 回答日時:
#2です。
B列の科目名とグラフのプロットが食い違っていたので修正しました。失礼いたしました。
目盛り数字を消す書式設定は、セル側でなく、グラフ側で行う方が良いので変更しました。
今度は完成形の図を添付いたしました。
No.4
- 回答日時:
#2,#3です。
乗りかかった船でVBA化してしまいました。正統的なグラフ作成コードではないと思いますが、ご参考まで。xl2010で試しています。マーカーの色を変える部分は2003等では動かないと思いますが、長くなってしまいますので(言い訳)、#2のリンク先をご参考に修正願います。'グラフのサイズをデフォルトでやっているので、データラベル位置の再現性のためには指定すべきですが手抜きです。
Sub test()
Dim sh As Worksheet
Dim myChart As Chart
Dim xValueRng1 As Range, xValueRng2 As Range, yValueRng As Range
Dim i As Long
Set sh = ThisWorkbook.Worksheets(2)
Set myChart = Charts.Add
myChart.ChartType = xlXYScatter
With sh
Set xValueRng1 = Range(.Range("D4"), .Range("D" & .Rows.Count).End(xlUp))
Set xValueRng2 = Range(.Range("E4"), .Range("E" & .Rows.Count).End(xlUp))
Set yValueRng = Range(.Range("C4"), .Range("C" & .Rows.Count).End(xlUp))
End With
With myChart
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = xValueRng1
.SeriesCollection(1).Values = yValueRng
.SeriesCollection(1).Name = xValueRng1.Cells(0)
.SeriesCollection.NewSeries
.SeriesCollection(2).XValues = xValueRng2
.SeriesCollection(2).Values = yValueRng
.SeriesCollection(2).Name = xValueRng2.Cells(0)
.SeriesCollection(2).MarkerStyle = -4142
.HasLegend = False
'データラベル移動の余地を準備
.PlotArea.Width = .PlotArea.Width - 40
.PlotArea.Left = .PlotArea.Left + 40
End With
With myChart.Axes(xlCategory)
.MinimumScale = -3
.MaximumScale = 3
.MajorUnit = 1
.HasMinorGridlines = True
.MinorUnit = 1
.TickLabelPosition = xlHigh
.TickLabels.NumberFormatLocal = "0""σ"""
End With
With myChart.Axes(xlValue)
.MinimumScale = 1
.MaximumScale = xValueRng2.Cells.Count
.MajorUnit = 1
.HasMinorGridlines = True
.MinorUnit = 1
.TickLabelPosition = xlLow
.TickLabels.NumberFormatLocal = """"""
End With
'データラベルの位置の調整は微調整が必要かも
For i = 1 To yValueRng.Rows.Count
With myChart.SeriesCollection(2).Points(i)
myChart.SeriesCollection(1).Points(i).Format.Fill.ForeColor.RGB = yValueRng.Cells(i).Offset(0, -1).Interior.Color
.HasDataLabel = True
.DataLabel.Left = .DataLabel.Left - 60
.DataLabel.Text = yValueRng.Cells(i).Offset(0, -1).Value
End With
Next i
myChart.Location Where:=xlLocationAsObject, Name:=sh.Name
End Sub
No.5ベストアンサー
- 回答日時:
#4です。
たびたび済みません。正規化標準偏差という表現は正しくありませんでした。
正規化した値というべきでしょう。計算方法は#1さんが回答されています。
下記で復習させていただきました。
http://detail.chiebukuro.yahoo.co.jp/qa/question …
コードの方ですが、最後にワークシートに移すとサイズ調整が面倒なので、最初にワークシートに移してからサイズを設定するには下記の様に変更すれば良いです。これに伴い、データラベルの移動値などを微調整する必要が出てきます。(変数を増やしているので宣言も必要になります)
Set sh = ThisWorkbook.Worksheets(2)
'グラフの作成(データ系列は後で設定)
chartObjCount = sh.ChartObjects.Count
Set myChart = Charts.Add
myChart.Location Where:=xlLocationAsObject, Name:=sh.Name
With sh.ChartObjects(chartObjCount + 1)
Set myChart = .Chart
.Width = 400
.Height = 250
End With
myChart.ChartType = xlXYScatter
連投での回答ありがとうございます。
説明とプログラムつきでとてもわかりやすかったです!
#1さんとあわせて、VBAへ取り組まさせていただきます!
また、質問することがあたらよろしくお願いします。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 高校受験 高校の偏差値について身バレ覚悟で質問です。設定された偏差値は50くらいなのに、最下位の合格者の偏差値 2 2022/08/24 16:06
- 高校受験 中3 9月 模試の結果D判定 夏に受けた模試の結果が第1志望D判定でした。 あと21点でやっと合格圏 3 2022/09/09 23:19
- 高校受験 中学校3年生です。 今回の前期中間のテストが9教科 900点中364点でした。 僕は高校に進学を取る 3 2022/06/25 01:56
- 高校受験 あと3ヶ月で偏差値10上げる方法を教えてください 3 2022/12/16 19:14
- 統計学 信頼区間についての質問です。 6 2023/06/25 17:34
- 大学受験 国立受験 11月からの大逆転劇を起こすには 7 2022/11/14 19:24
- 高校受験 数学の問題いくつか捨てても大丈夫?残り1ヶ月、点数が取れない教科ばっか勉強しても大丈夫? 高校受験 2 2023/01/07 17:55
- 統計学 直線の傾き(回帰係数)から相関係数を計算できるのでしょうか? 2 2022/09/16 19:28
- 統計学 確率統計でExcelの使い方を教えてください。 3 2022/07/27 19:21
- 高校 数学で学年最低点を記録してしまいました。 1 2023/07/03 15:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの主軸と第2軸の0を合...
-
エクセルで円グラフに引き出し...
-
excelグラフでデータテーブルを...
-
エクセルのグラフ作成時に、折...
-
1.0未満のデータラベルを自動的...
-
EXCELグラフで「#N/A」が表示さ...
-
Excelの凡例を自由に編集する方法
-
エクセルの凡例の順序をグラフ...
-
Excelグラフを並べ替えた時の色...
-
エクセル2010 レーダーチャート...
-
パワーポイントにグラフを挿入...
-
エクセルで需要と供給のグラフ...
-
EXCELで折れ線グラフを作る
-
EXCELの円グラフで引き出し線を...
-
エクセルで作ったグラフの項目...
-
Excel2010 散布図 でベタ色指定
-
エクセルの散布図 近似曲線の...
-
Excel2000円グラフでパーセンテ...
-
Excelのグラフについて教えてく...
-
パワーポイントグラフのラベル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの主軸と第2軸の0を合...
-
エクセルで円グラフに引き出し...
-
excelグラフでデータテーブルを...
-
エクセルのグラフ作成時に、折...
-
Excelの凡例を自由に編集する方法
-
1.0未満のデータラベルを自動的...
-
円の16分割&色を塗りたい
-
Excelグラフを並べ替えた時の色...
-
EXCELグラフで「#N/A」が表示さ...
-
スペック足りてるのにゲームが...
-
パワーポイントにグラフを挿入...
-
パワーポイントグラフのラベル...
-
Excel2007グラフの軸ラベルで、...
-
EXCELで折れ線グラフを作る
-
エクセルで需要と供給のグラフ...
-
Excelのグラフについて教えてく...
-
Excel2010 散布図 でベタ色指定
-
エクセルの散布図で新たに入力...
-
エクセルの主軸と第2軸の0を合...
-
レーダーグラフを使って「指向...
おすすめ情報