ローソク足に別のデータを線画で書き加えるにはどうすればよいのでしょうか。
以下のコード、「’ローソク足」の部分だけだとうまく表示されるのですが、その後の部分「’線画」をコードに書き加えるとローソク足がおかしくなります。(全て高値=終値の陽線になります)。データは
C列 始値
D列 高値
E列 安値
F列 終値
J列 オリジナルのデータ
シート名は「Day」
となっています。
EXCEL2000を使用しています。
よろしくお願いいたします。
Sub Macro6()
’ローソク足
Range("C5:F15").Select
Charts.Add
ActiveChart.SetSourceData Source:=Sheets("Day").Range_ ("C5:F15"), PlotBy :=xlColumns
ActiveChart.ChartType = xlStockOHLC
ActiveChart.Location Where:=xlLocationAsObject, Name:="Day"
ActiveChart.HasLegend = False
’線画
ActiveChart.PlotArea.Select
ActiveChart.ChartType = xlStockOHLC
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(5).Select
With Selection.Border
.ColorIndex = 43
.Weight = xlThin
.LineStyle = xlContinuous
End With
ActiveChart.SeriesCollection(5).Values = "=Day!R5C10:R15C10"
End Sub
No.4ベストアンサー
- 回答日時:
こんばんは。
Wendy02です。
手間取って、遅くなりました。#3は、とんちんかんな内容を書いてしまいましたが、以下で試してみてください。たぶん、良いと思います。マクロの基本的な考え方は合っていたのですが、今ひとつ、考えをめぐらす知恵が足らなかったようでした。
なお、以下には、項目軸ラベルが使用されていません。項目軸に日付を入れることは手動で確認しております。そして、新しい系列を加えたときに、元のデータに準ずるように作られています。また、サイズは、お好きなように直してください。確認のために大きくしてあります。
言い訳ですが、グラフでマクロを作る資料は、とても少ないです。
'--------------------------------------------------------------
Sub GraphMakingR()
'株式用グラフ 修正版
Dim mySht As Worksheet
Dim ChartN As ChartObject
Dim rngData As Range
Dim strNdata As String
'ユーザー設定
Set mySht = Worksheets("Day")
Set rngData = mySht.Range("C5:F15")
strNdata = mySht.Name & "!" & Range("J5:J15").Address(1, 1, xlR1C1)
'ローソク足
Set ChartN = mySht.ChartObjects.Add(100, 100, 400, 300)
ChartN.Chart.SetSourceData rngData, PlotBy:=xlColumns
ChartN.Chart.ChartType = xlStockOHLC
'線画
With ChartN.Chart.SeriesCollection.NewSeries
.Values = "=" & strNdata
.ChartType = xlXYScatterLines
With .Border
.ColorIndex = 4
.Weight = xlThin
.LineStyle = xlContinuous
End With
'.MarkerBackgroundColorIndex = xlNone
'.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
'.MarkerSize = 5
.Shadow = False
.AxisGroup = 1 '主軸設定*
End With
End Sub
'--------------------------------------------------------------
No.6
- 回答日時:
Wendy02です。
それは良かったです。ホっとしています。
私自身が途中でダメかと思いました。
良い勉強をさせていただきました。こんな経験は、1年に1度もあるかどうかです。こちらこそ、ありがとうございました。
なお、
AxisGroup = 1 '主軸設定*
通常は、それがなくてもいけるはずですが、項目軸ラベルに日付データを入れると、折れ線グラフが別の項目軸ラベルを使ってしまうので、この部分が、実は、ミソになるかもしれません。こちらは、XL2003ですが、項目軸に日付データを入れる場合、項目名の先頭を入れないとうまく出来ません。確かなことではありませんが、他のデータには、そのようなことがありません。
横軸のデータ(年・日付)はA列にありますので、以下のようなコードを加えてX軸に日付を表示してみました。
ChartN.Chart.SeriesCollection(1).XValues = "=Day!R100C1:R110C1"
(A列の100行目~110行目の日付をチャートのX軸に設定する)
おかげさまで無事チャート作成マクロが完成しましたので
これで質問を締め切らせていただきます。
大変お世話になりました。
No.5
- 回答日時:
補足
色の設定は直してください。
.ColorIndex = 4
↓
.ColorIndex = 43
この回答への補足
作成していただいたチャート描画マクロは理想的なものです。xlXYScatterLines(折れ線つき散布図)を使うんですね。気づきませんでした。
とりあえず、下記のようにラインを2本にして試してみたところ何の問題もありませんでした。線は6本ぐらい引く予定なので、For-Nextや配列変数を使って少し改良してみようかと思っています。
こういうプログラミングの応用・工夫は本当に難しいですね。もっと勉強します。
今回私はGooに質問投稿する前、Excelのチャートではこの作業は無理なのではないかと半ばあきらめ気味になっていたのですが、Wendy02様のおかげでベストなものを完成させることができました。
この度は、多くの時間と労力を割いていただき、本当にありがとうございました。
心よりお礼申し上げます。
Sub GraphMakingR2()
'株式用グラフ 修正版
Dim mySht As Worksheet
Dim ChartN As ChartObject
Dim rngData As Range
Dim strNdata As String
'ユーザー設定
Set mySht = Worksheets("Day")
Set rngData = mySht.Range("C1115:F1150")
strNdata = mySht.Name & "!" & Range("J1115:J1150").Address(1, 1, xlR1C1)
strNdata2 = mySht.Name & "!" & Range("M1115:M1150").Address(1, 1, xlR1C1)
'ローソク足
Set ChartN = mySht.ChartObjects.Add(100, 100, 400, 300)
ChartN.Chart.SetSourceData rngData, PlotBy:=xlColumns
ChartN.Chart.ChartType = xlStockOHLC
'線画
With ChartN.Chart.SeriesCollection.NewSeries
.Values = "=" & strNdata
.ChartType = xlXYScatterLines
With .Border
.ColorIndex = 4
.Weight = xlThin
.LineStyle = xlContinuous
End With
'.MarkerBackgroundColorIndex = xlNone
'.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
'.MarkerSize = 5
.Shadow = False
.AxisGroup = 1 '主軸設定*
End With
With ChartN.Chart.SeriesCollection.NewSeries
.Values = "=" & strNdata2
.ChartType = xlXYScatterLines
With .Border
.ColorIndex = 5
.Weight = xlThin
.LineStyle = xlContinuous
End With
'.MarkerBackgroundColorIndex = xlNone
'.MarkerForegroundColorIndex = xlAutomatic
.MarkerStyle = xlNone
.Smooth = False
'.MarkerSize = 5
.Shadow = False
.AxisGroup = 1 '主軸設定*
End With
End Sub
No.3
- 回答日時:
Wendy02です。
中途状況ですが、
現在のローソク足の株価グラフでは、第5系列(数日の平均値?)を加えることは不可能なのですね。それだけでなく、それにグラフを付け加えること自体が困難なようです。
もともと、この組み込みグラフ自体は海外から来たものなので、そういう習慣がないようです。
しかし、海外には、グラフの扱いに長けた人間もいるようなので、もう少し調べてみます。
他の方のサンプルをいろいろみましたが、やはり、ろうそく足の株価(ろうそくの厚みがある)グラフでは、作られていませんでした。今の方法からの延長上には、もしかしたら、成功しない可能性が強いということだけは、記しておきます。
今日は、ここまでです。
No.2
- 回答日時:
こんばんは。
うっかり確認を忘れていました。株式のグラフなどやったこともありませんので。
後で、見比べていたら、グラフが変わってしまっていました。
>これを解決する方法が見つかれば良いのですが・・・。
たぶん、マクロは途中から、ぜんぜん違っているような気がします。
特殊な方法を使うように思います。
> ChartTypeをxlStockOHLC
の中で、処理してはダメなのですね。(始値、高値、安値、終値)は、替えがたいのに、そこに入れ替わりになってしまったようになっています。
ちょっと、テクニックが必要のようです。あまりやったことがないので、思い出すのに時間が掛かります。ひとつのグラフに、別の折れ線グラフを取り入れるテクニックだと思います。確か、その方法は一度はやったことがあります。
確認ですが、もともと、これは、手作業でも出来ていないのでしょうね。
しばらく時間をくださいませんか?考えてみます。
.Address(1, 1, xlR1C1)
は、R1C1 の絶対座標番地に換える方法です。
No.1
- 回答日時:
こんばんは。
一応、前の解答に準じましたが、グラフの高さは、大きくしました。
なお、線画の色が薄いような気がします。
Sub GraphMaking()
'株式用グラフ
Dim mySht As Worksheet
Dim ChartN As ChartObject
Dim rngData As Range
Dim strNdata As String
'シート
Set mySht = Worksheets("Day")
'元データ
Set rngData = mySht.Range("C5:F15")
'線画用補足データ
strNdata = mySht.Name & "!" & Range("J5:J15").Address(1, 1, xlR1C1)
'ローソク足
Set ChartN = mySht.ChartObjects.Add(200, 200, 200, 300)
ChartN.Chart.SetSourceData rngData,PlotBy:=xlColumns
ChartN.Chart.ChartType = xlStockOHLC
'線画
With ChartN.Chart.SeriesCollection.NewSeries
With .Border
.ColorIndex = 43 '黄緑
.Weight = xlThin
.LineStyle = xlContinuous
End With
.Values = "=" & strNdata
End With
End Sub
この回答への補足
ありがとうございます。
ですが実行してみたところ、従前と同じ結果になってしまいました。
あれからまた少し調べてみたのですが、おそらくChartTypeをxlStockOHLCに設定した際に実行されていると思われる、降下線を描くHasDropLineプロパティと陰線陽線を表示するHasUpDownBarsプロパティは、全てのチャート要素のうち最も高いものと最も低いものに無条件に反応してしまっているようです(それとも"最後尾の"J5:J15データか?)。従って、上記コードのうち、J5:J15のデータ部分を始値・終値とするチャートに書き換えられてしまいます。これを解決する方法が見つかれば良いのですが・・・。
これについてはもう少し調べてみることにいたします。
教えていただいたコードのうち、12~13行目の
.Address(1, 1, xlR1C1)の部分がどのような役目を果たしているのかよく分かりませんでした。
もしお暇がございましたら、この場で教えていただけたら幸いに存じます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) 指定の条件に応じたセルの場所に〇印(図形)を描く 2 2022/11/08 15:26
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAで列を削除 3 2023/02/01 11:00
関連するカテゴリから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を合...
-
レーダーグラフを使って「指向...
おすすめ情報