株価グラフの設定方法

このQ&Aのポイント
  • 株価グラフを横に3個並べて表示する方法を教えてください。
  • ローソクの幅を広くする方法と背景を着色する方法がわかりません。
  • エクセル2010で株価グラフの設定を試みていますが、エラーが発生して困っています。
回答を見る
  • ベストアンサー

グラフの設定方法を教えて下さい

株価グラフを、セル範囲に合わせて横に3個並べて表示させています。 同時に凡例非表示などの条件を設定していますが  1.ローソクの幅(太さ)を広くしたい  2.背景を着色したい この2つの設定が出来ません。何回か挑戦しましたがエラーの壁にはじき飛ばされて 困っています。是非、教えて下さい。 (Win7、エクセル2010) For I = 1 To 3 With ActiveSheet.ChartObjects.Add(Left:=Cells((I - 1) * 4 + 1).Left, _ Top:=Cells(3, 1).Top, Width:=xSize(2), Height:=ySize(2)) With .Chart .SetSourceData Source:=GFDB(4, I), PlotBy:=xlColumns .ChartType = xlStockOHLC '-------------株価グラフ .HasLegend = False '---------------------凡例非表示 .HasAxis(xlValue) = False '-------------Y軸(数値軸)非表示 .HasAxis(xlCategory) = False '---------X軸(項目軸)非表示 End With End With Next I

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

見落としていました。         .DownBars.Format.Fill.ForeColor.RGB = RGB(128, 0, 0) ' 陰線の塗り潰し色 赤系 > 陰線の塗り潰しを黒以外で指定する方法は、 見つけいたのを忘れていました。 > 陰陽線(枠を除く)の幅を指定する方法は、 間接的には出来るみたいですが、直接の方法はやっぱり解りません。 それでは、ここら辺で、、、。

その他の回答 (2)

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.2

#1cjです。補足拝見しました。 ロウソクを「陰陽線」と「ヒゲ」に分けて説明します。 通常は、   始値よりも終値の方が高い場合=陽線(白ヌキ)   始値よりも終値の方が安い場合=陰線(黒ヌリ) として表示される訳ですが、 陽線の白ヌキを他の色でヌクことは出来ても、 陰線の塗り潰しを黒以外で指定する方法は、私には見つけられません(出来るのか解りません)。 ヒゲの太さを指定することは出来ても、 陰陽線(枠を除く)の幅を指定する方法は、私には見つけられません(出来るのか解りません)。 もし、そういったことを知りたい、ということでしたら、 それに特化した形で別途質問を建ててみれば識者の回答が得られるのかも知れません。 差し当たり、 > 何故か、ローソク全体が黒塗りになってしまいます。 まず、チャートタイプにxlStockOHLCを指定している訳ですから、   始値 高値 安値 終値 4つの項目を正しい順番で作表出来ているかを一応確認してください。 もしも、始値=高値、終値=安値、で下がり続けていれば、陰線しか表示されませんから、 その場合全体が黒塗りになるのは正常です。 それ以外で、ヒゲの色を黒以外で指定しているにも係らず、 ヒゲが黒く塗りつぶされているのだとしたら、よく解りませんが、それは異常ですね。 陰陽線枠色、陽線のヌキ色、の指定方法を追記しておきます。     With .Chart       .SetSourceData Source:=GFDB(4, i), PlotBy:=xlColumns       .ChartType = xlStockOHLC '-------------株価グラフ       .HasLegend = False '---------------------凡例非表示       .HasAxis(xlValue) = False '-------------Y軸(数値軸)非表示       .HasAxis(xlCategory) = False '---------X軸(項目軸)非表示       .ChartArea.Format.Fill.ForeColor.RGB = RGB(204, 204, 255) ' ChartArea背景色 薄青       .PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 204, 204) ' PlotArea背景色 薄赤       With .ChartGroups(1)         .HiLoLines.Format.Line.Weight = 3 ' ヒゲ 太さ         .HiLoLines.Format.Line.ForeColor.RGB = RGB(32, 32, 255) ' ヒゲ色 青系         .UpBars.Format.Line.ForeColor.RGB = RGB(32, 32, 255) ' 陰陽線枠色 青系         .UpBars.Format.Fill.ForeColor.RGB = RGB(255, 255, 32) ' 陽線のヌキ色 黄色系       End With     End With

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.1

こんにちは。     With .Chart       .SetSourceData Source:=GFDB(4, i), PlotBy:=xlColumns       .ChartType = xlStockOHLC '-------------株価グラフ       .HasLegend = False '---------------------凡例非表示       .HasAxis(xlValue) = False '-------------Y軸(数値軸)非表示       .HasAxis(xlCategory) = False '---------X軸(項目軸)非表示       .ChartArea.Format.Fill.ForeColor.RGB = RGB(204, 204, 255)       .PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 204, 204)       .ChartGroups(1).HiLoLines.Format.Line.Weight = 5       .ChartGroups(1).HiLoLines.Format.Line.ForeColor.RGB = RGB(32, 32, 255)     End With みたいなことでしょうか 特別詳しい訳ではないので解説は控えます。 色々書き換えたりして試してみれば解ると思いますので、、、。 とりあえず、以上です。

dORAGON2394
質問者

補足

cj_moverZさん ご回答ありがとうございました。 さっそく試してみました。結果、背景色と、ローソクの幅については 良好でしたが、何故か、ローソク全体が黒塗りになってしまいます。 でも、これで十分です。ありがとうございました。

関連するQ&A

  • グラフの凡例のデータ範囲を変数を使って設定したい

    エクセルで線グラフを作成し、凡例を設定するvbaの記述方法がわかりません。 凡例に設定したいデータは、連続する2つのセルの範囲で、変数を用い、記述できないかと模索しています。 線グラフは3つの系統あります。 記述内容は以下の通りです --------------------------------------------------------- Sub グラフ化() d = Worksheets("sheet1").Range("A10").End(xlUp).Row ThisWorkbook.Charts("Graph1").Activate With ActiveChart    .ChartType = xlLine    .HasDataTable = True    .HasLegend = True End With For i = 1 to 3 ActiveChart.SeriesCollection(i).Name = Worksheets("sheet1").Range(Cells(i, 3), Cells(i, 5)) Next End Sub ----------------------------------------- 上記の記述ですと、 'Cells'メソッドは失敗しました.'Global'オブジェクト とエラー表示がでます。 すみませんが、よろしくお願いします。

  • 任意にデータの範囲を選択し、グラフを描画したい

    質問を閲覧していただきありがとうございます。 できればみなさんのお力を貸していただきたいことがあり、質問しました。 以下にマクロ作成に用いたプログラムの仕様とコードを貼りますので、ご指摘等いただけましたら幸いです。 まず、今回のマクロの目的は ・既に存在するエクセルデータから、x軸、y軸のデータ列の長さに応じたグラフを描画するVBプログラムを書く事 です。 ・可能ならば、既存のふたつのグラフを結合したものを新しく表示する ※データシートの画像は添付しましたのでご覧ください。 以上のふたつとなります。 理想形としては、 A2 ~ A1025までをx軸のデータ、B2~B1025までの実データ値としたグラフAを一つ D2 ~ E1025までをx軸のデータ、E2~E1025までの実データ値としたグラフBを一つ 上記二つのグラフを結合したグラフを一つ の3つのグラフが自動的に作成され、エクセルファイル上に表示されている といったような感じです。 私の書いたコードの問題点としては、 ・グラフAグラフBともに「x軸と実データが正しく対応していない」 →本来両方のグラフにおいてはグラフの右端まで折れ線グラフが続いているはずですが、x軸の値にして約1000の所でデータが終わってしまっています。 ・グラフBでは、D2 ~ D344, E2 ~ E344 を基にしたグラフ一つのみが描画されているはずですが、ここには何故か二つ以上の折れ線グラフがあるようにみえ、グラフB右には系列1~5までがあるように書かれています。(理想としては5個ではなく実データを示すもの一つのみ) ・ふたつのグラフの結合方法が不明 という感じです。 以下にプログラムを貼ります。 お時間ありましたら、ご指摘の程宜しくお願い致します。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sub グラフ描画() chart_title1 = "グラフA" chart_title2 = "グラフB" '軸のタイトル x_title = "周波数[Hz]" y_title = "パワー" ' -------------------------グラフ作成---------------------- ' グラフを描画 Dim chartObj1 As ChartObject Set chartObj1 = ActiveSheet.ChartObjects.Add(1, 1, 300, 200) With chartObj1.Chart ' データ範囲をセット .SetSourceData Source:=Range(Range("B2"), _ Cells(2, 1).End(xlDown)) ' x軸の項目軸範囲をセット .SeriesCollection(1).XValues = Range(Range("A2"), _ Cells(1, 1).End(xlDown)) ' オプションをセット .ChartType = xlXYScatterSmoothNoMarkers ' 散布図 .HasTitle = True .ChartTitle.Characters.Text = chart_title .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = x_title .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = y_title ' x軸の最大値、最小値設定 .Axes(xlCategory, xlPrimary).MinimumScale = 0 .Axes(xlCategory, xlPrimary).MaximumScale = 4500 ' y軸の最大値、最小値設定 .Axes(xlValue).MinimumScale = -10 .Axes(xlValue).MaximumScale = 3 End With Dim chartObj2 As ChartObject Set chartObj2 = ActiveSheet.ChartObjects.Add(1, 320, 300, 200) With chartObj2.Chart ' データ範囲をセット .SetSourceData Source:=Range(Range("E2"), _ Cells(2, 1).End(xlDown)) ' x軸の項目軸範囲をセット .SeriesCollection(1).XValues = Range(Range("D2"), _ Cells(1, 1).End(xlDown)) ' オプションをセット .ChartType = xlXYScatterSmoothNoMarkers ' 散布図 .HasTitle = True .ChartTitle.Characters.Text = chart_title .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = x_title .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = y_title ' x軸の最大値、最小値設定 .Axes(xlCategory, xlPrimary).MinimumScale = 0 .Axes(xlCategory, xlPrimary).MaximumScale = 4500 ' y軸の最大値、最小値設定 .Axes(xlValue).MinimumScale = -10 .Axes(xlValue).MaximumScale = 3 End With End Sub ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • VBAでグラフの凡例をまびきたいのですが

    エクセル2003のVBAで、グラフの凡例をまびきたいのですがやり方がわかりません。 例えば 系列1:凡例表示 系列2:凡例非表示 系列3:凡例表示 系列4:凡例非表示 といった具合です。 以下のような雰囲気のコードはないでしょうか。 For i=1 to 10 Workbooks("matome.xls").Charts("Graph_PinPex").SeriesCollection(i * 2).HasLegend = False Next i

  • Excelでのグラフ作成用マクロについて。

    「新しいマクロを記録する」でグラフ作成用のマクロを作りました。 内容は、 1.sheet1のBC列を散布図でsheet2に出力。(4つほど別々のグラフを作成) 2.プロットエリアの拡大 3.図の位置調整・図の大きさ調整。(4つが重ならないように) というものです。 一応出来たのですが、何故か選択列を変更して(マクロ内の列選択を変更)出力・プロットエリア拡大までは出来るのですが、3が出来ません。 それで、分からないなりにマクロ内を覗いてみたところ、図の位置を調整する際に、対象となる図が ActiveSheet.Shapes("グラフ 17").IncrementLeft -177.75 などと言うように、グラフ17を参照してしまっているためにうまく動かないのだと思いました。 (そもそも、名前なんて付けていないはず・・・と思って調べていたら、どうやら「グラフウインドウ」で見ることが出来る名前を参照しているようでした。) いっそのこと、グラフをクリック・ドラッグで移動させるのではなく、出力する際に整然と並ぶように設定したいです。どうすればよいでしょう? 一応、作成したものを載せておきます。 ・1~2 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "mass" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "counts" End With ActiveChart.HasLegend = False ActiveChart.PlotArea.Select With Selection.Interior .ColorIndex = 2 .Pattern = xlSolid End With Selection.Top = 1 Selection.Width = 323 Selection.Height = 180 Selection.Left = 15 Selection.Width = 334 Selection.Height = 194 ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = 0 .MaximumScale = 50 .MinorUnitIsAuto = True .MajorUnit = 5 .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub 3. ActiveSheet.Shapes("グラフ 17").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 17").IncrementTop -105.75 End Sub

  • Excelでのグラフ作成用マクロについて

    Excelで、グラフ作成をするマクロを作りました。 sheet1のBC列選択→sheet2に出力→プロットエリア拡大まではうまくいったのですが、肝心の「図の位置調整・サイズ調整」が出来ませんでした。 中身を見たところ、「グラフ12」とかいう名前が勝手についていたらしく、何回やってもその名前を変更することが出来ませんでした。 参照する列を変更してグラフを作成しようとすると、次のグラフが「グラフ13」となってしまい、図の位置調整のところでエラーになります。 マクロは次のようなものなのですが、どうすれば「グラフ12」ではなく、「先ほど作ったばかりのグラフ」を参照してくれるのでしょうか? グラフ12という部分に任意の名前さえつけられれば、何とかなりそうなのですが・・・ グラフ12というものは、「グラフウインドウ」で見られるもののようです。 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With ActiveSheet.Shapes("グラフ 12").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 12").IncrementTop -105.75 ActiveSheet.Shapes("グラフ 12").ScaleWidth 1.48, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 12").ScaleHeight 1.21, msoFalse, msoScaleFromTopLeft ActiveChart.Axes(xlCategory).Select ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.PlotArea.Select Selection.Top = 1 Selection.Width = 526 Selection.Height = 242 End Sub

  • VBA グラフを複数作成する場合

    マクロにてグラフを複数作成しようと考えています しかし、ループを使用してグラフを作成すると 1つ以上の場合エラーになってしまい作成できません どのように作成したらよいのでしょうか? 2つ目以降のグラフObjectの名前が重なるからエラーになるとか、そういう部分での問題でしょうか? ------------------------------------- Sub Graph   For i = 1 To 2 'source_cnt   Call Make_Graph(引数)   Next End Sub ------------------------------------- Sub Make_Graph(引数) With ActiveSheet.ChartObjects.Add( _ Left:=Range(***).Left, _ Top:=Range(***).Top, _ Width:=Range(***).Width, _ Height:=Range(***).Height) .Chart.ChartType = xlRadar .Chart.SetSourceData Source:= Range(***), PlotBy:=xlColumns .Chart.Location Where:=xlLocationAsObject, Name:=WorkSheet.Name .Chart.HasLegend = False End With -------------------------------------

  • エクセルグラフの軸ラベルを一括変換出来なくて困っています。

    お世話になります。 初めて投稿いたします。 VBA初心者です。エクセルグラフの軸ラベルを一括変換したいのですが、分からなくて困っています。 過去ログ、個人HPなどを参考にして、一つのグラフを選択、下記マクロを実行すれば、一つのグラフのみなら軸ラベルを変更する事が出来たのですが、ワークシート内の複数の埋め込みグラフを一発でラベル変更する場合のマクロが作成できません。 当方会社員、データをまとめる為、今回100ヶほどのグラフを一括変換したいため、どうしてもマクロ処理したいと考えています。 For Each・・・Next でループさせたいのですが、何分初心者勉強中の為、エラー多発、何方かお分かりの方、お助け下さい。 Sub 軸ラベル一括変換() With ActiveChart With .Axes(xlCategory, xlPrimary) .HasTitle = True .AxisTitle.Text = "X" End With With .Axes(xlValue, xlPrimary) .HasTitle = True .AxisTitle.Text = "y" End With End With End Sub

  • グラフ可変範囲のデータ設定

    環境Excel2002です グラフ 1が棒グラフ2個、折れ線グラフ1個で作成されています Sheets("支社")に8支社のデータがあります グラフシートは1Sheetにしたいので グラフシートで支社を選択することにより Sheets("支社")の該当支社のグラフデータを取得します そうすると、グラフデータは可変範囲で設定することになります そのVBAが下記です ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).Select With ActiveChart.SeriesCollection(1) .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) .Values = Sheets("支社").Range(Cells(497, i + 1), Cells(497, i + 12)) End With .XValues = Sheets("支社").Range(Cells(497, i), Cells(497, i + 12)) のところで実行時エラー1004がでてしまいます エラー回避方法を教えてください

  • 複数のグラフを整列させて表示する方法

    現在、複数のグラフを作成するマクロを作っています(ちなみに、今日はじめてマクロを用いたグラフ作成に取り組みました)。 それぞれの行に13個のデータが入っていて(平均値と標準偏差がそれぞれ入っている)、それを用いて行ごとにグラフを作成します。 データが格納されている行はだいたい300個くらいなのですが、今のままだと300のグラフがすべて重ねられた状態で出てきます。 これを整列した状態で表示させたいのですが、どのようにすればよいのでしょうか? あと、今回はほとんど「マクロの記録」で作ったので、なんかソースが汚ないのでもう少し綺麗にならないでしょうか? 下にソースをのせておきます。よろしくお願いします。 Sub Macro6() ' ' Macro6 Macro ' ' Dim x As Long Cells(1, 1).Select x = Range(Selection, Selection.End(xlDown)).Rows.Count For i = 2 To x Range(Cells(i, 2), Cells(i, 14)).Select 'これがないと棒どうしが密着したグラフになる。 ActiveSheet.Shapes.AddChart.Select 'データの範囲を指定 ActiveChart.SetSourceData Source:=Range(Cells(i, 2), Cells(i, 14)) 'エラーバーをつける ActiveChart.ChartType = xlColumnClustered ActiveChart.SeriesCollection(1).HasErrorBars = True ActiveChart.SeriesCollection(1).ErrorBar Direction:=xlY, Include:=xlErrorBarIncludeBoth, Type:=xlErrorBarTypeCustom, Amount:=Range(Cells(i, 15), Cells(i, 27)), MinusValues:=Range(Cells(i, 15), Cells(i, 27)) 'Legendを消す ActiveChart.Legend.Select Selection.Delete 'タイトルや軸ラベルの名前を変更する ActiveChart.SetElement (msoElementChartTitleAboveChart) ActiveChart.ChartTitle.Text = Cells(i, 1) ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis) ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Text = "Class" ActiveChart.Axes(xlCategory, xlPrimary).axistitle.Font.Size = 14 ActiveChart.SetElement (msoElementPrimaryValueAxisTitleRotated) ActiveChart.Axes(xlValue, xlPrimary).axistitle.Text = "Intensity" ActiveChart.Axes(xlValue, xlPrimary).axistitle.Font.Size = 14 Next i End Sub

  • パワーポイントVBAでグラフのサイズ・位置を統一

    パワーポイントVBAに貼付けた複数のグラフサイズを統一したいと思っています。 1~20枚目のスライドに、それぞれ2つのグラフが貼付けてあります。 全てのグラフサイズ・位置を統一したいと思い、以下の様なVBAを書いてみました。 ---------- Sub 表サイズの統一() Dim myTop1, myLft1, myHgt1, myWdt1, cnt, i, myTop2, myLft2, myHgt2, myWdt2 With ActivePresentation.Slides(1).Shapes(1) myTop1 = .Top myLft1 = .Left myHgt1 = .Height myWdt1 = .Width End With With ActivePresentation.Slides(1).Shapes(2) myTop2 = .Top myLft2 = .Left myHgt2 = .Height myWdt2 = .Width End With cnt = ActivePresentation.Slides.Count For i = 2 To cnt With ActivePresentation.Slides(i).Shapes(1) .Top = myTop1 .Left = myLft1 .Height = myHgt1 .Width = myWdt1 End With Next For i = 2 To cnt With ActivePresentation.Slides(i).Shapes(2) .Top = myTop2 .Left = myLft2 .Height = myHgt2 .Width = myWdt2 End With Next End Sub ---------- 各スライドにある1つ目のグラフのサイズは統一出来たのですが、2枚目のグラフは何の変化もおきません。 どこが悪いのか、どなたかご教示頂ければ幸いです。 どうぞよろしくお願い致します。

専門家に質問してみよう