...「横棒グラフ」と「折れ線でつないだ散布図」の複合グラフの事です。
最近、一般操作質問掲示板でレス入れたんですが、文章で説明するのはたいへんだと思って中途半端な書込みに終ってしまいました。
でも手順を整理してちゃんとやったらそんなに難しくなかったです......反省。
▼こんなシートから
▼こんなグラフを作る場合。
基本的には一般操作の範疇です。
例の如く手抜きのようだけど、ちょっと多めにコメント入れてるから少しは親切ぽく見えるかな :D
他にも色々やり方があるみたいです。勉強になりました。
最近、一般操作質問掲示板でレス入れたんですが、文章で説明するのはたいへんだと思って中途半端な書込みに終ってしまいました。
でも手順を整理してちゃんとやったらそんなに難しくなかったです......反省。
▼こんなシートから
▼こんなグラフを作る場合。
基本的には一般操作の範疇です。
例の如く手抜きのようだけど、ちょっと多めにコメント入れてるから少しは親切ぽく見えるかな :D
Option Explicit Sub pre() 'サンプルシート作成 Const s = ". あなたは何が好きですか? " Const m = "コーヒー 紅茶 緑茶 烏龍茶 抹茶 " _ & "日本酒 焼酎 ビール 発泡酒 ワイン" Dim i As Long Dim v Dim w(1 To 10, 1 To 3) Randomize For Each v In Split(m) i = i + 1 w(i, 1) = i w(i, 2) = Left$("Q" & Format$(i, "00") _ & Replace$(s, "何", v), 20) w(i, 3) = CLng(Int(40 * Rnd)) / 10 + 1 Next With Sheets.Add .Range("A1:C1").Value = Array("№", "Q", "Average") .Range("A2:C11").Value = w .Range("C2:C11").NumberFormat = "0.0" .Columns("A:C").AutoFit End With Call try End Sub '------------------------------------------------- Sub try() Const x As Long = 5 '評価点MAX値 Dim y As Long '設問数 Dim r As Range With ActiveSheet Set r = .Range("A1").CurrentRegion Set r = Intersect(r, r.Offset(1)) y = r.Rows.Count With .ChartObjects.Add(r.Width, 0, 600, 300).Chart '■B:C列を元データに、まず横棒グラフを作成。(※) .ChartType = xlBarClustered .HasLegend = False .ChartArea.AutoScaleFont = False With .SeriesCollection.NewSeries .XValues = r.Columns(2) .Values = r.Columns(3) End With '■[元のデータ]-[系列]タブで系列を追加した後、 '追加した系列だけ選択して右クリック[グラフの種類]で '「折れ線でつないだ散布図」に変更する。 'その後[元のデータ]-[系列]タブで 'yの値をA列に、xの値をC列にする。 With .SeriesCollection.NewSeries .ChartType = xlXYScatterLines 'y値 .Values = r.Columns(1) 'x値 .XValues = r.Columns(3) .Border.Color = vbBlue .MarkerBackgroundColor = vbBlue .MarkerForegroundColor = vbBlue End With '■散布図のy軸(第2数値軸)[軸の書式設定]で '最小値-0.5、最大値+0.5に設定し、軸を反転後クリアする。 With .Axes(xlValue, xlSecondary) .MinimumScale = 0.5 .MaximumScale = y + 0.5 .ReversePlotOrder = True .Delete End With '■横棒グラフの項目軸[軸の書式設定]で軸を反転する。 With .Axes(xlCategory) With .TickLabels .Font.Name = "MS ゴシック" .Font.Size = 9 .Orientation = xlHorizontal End With .HasMajorGridlines = True .ReversePlotOrder = True End With '■散布図のx軸(第2軸)をクリアする。 On Error Resume Next '2007用 .Axes(xlCategory, xlSecondary).Delete On Error GoTo 0 '■横棒グラフの数値軸の最小値最大値を設定する。 With .Axes(xlValue) .MinimumScale = 1 .MaximumScale = x .MinorUnit = 1 .MajorGridlines.Border.LineStyle = xlDot End With '■横棒グラフ[データ系列の書式設定]-[パターン]で '輪郭と領域を「なし」にする。 '※作成時点でやっても良い。 With .SeriesCollection(1) .Border.LineStyle = xlNone .Interior.ColorIndex = xlNone End With End With End With Set r = Nothing End Sub
他にも色々やり方があるみたいです。勉強になりました。