• 締切済み

エクセルデータをVB2008のMSChartでグラフ化する方法を教えてください!!

はじめまして。VB初心者です。 エクセルからデータを取り出し、VB2008のMSChartコントロールを使って、マーカー無しの平滑線の散布図を作ろうと思っています。まだVB初心者で、プログラム作るのに苦労しています(汗)。エクセルから下記のようにランダムにデータを取り出して表示する方法わかる方いましたらご教示お願いします。(サンプルコードありましたら助かります!!) ★VB2008のMSChartコントロールで下記のように表示したいです!! (1)エクセルにあるデータは、A1からデータがはじまっているのではなく、AFの3からはじまり、3,6,9,12(行)に系列ごとにデータが入力されます(下記のエクセルデータ例参考)。 (2)VBでの表示は下記のエクセルで作ったグラフのようにしたいです!!データはエクセルデータの行に入力されている黄色の部分です。(X軸目盛りは1単位となります)、 (3)系列はエクセルの行となり、表示は系列をすべて重ねて表示します。(系列の数は列のセルの最後まである場合があります) 参考にエクセルでグラフ作りましたのでみて頂ければ幸いです

みんなの回答

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.4

次のサイトはC#で書かれていますが、参考になりますでしょうか? http://www.oborodukiyo.info/MSChart/VS2008/MSChartMain.aspx

回答No.3

マルチポストする暇があるなら、試してみれば少し位理解できるかと 思います。 私も今回初めて試したので、貴方がどのような使い方をするかまで 考慮しておりませんが、Line のグラフの表示を試してみました。 元々、グラフの表示は、個人の好みが大きく左右されるので、自分で 色々試して理解するようにしないと応用ができません。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Dim dat(2, 10) As Integer 'Excel から取得して下さい。 Chart1.Series.Add("系列1") Chart1.Series.Add("系列2") Chart1.Series.Add("系列3") For i As Integer = 0 To 10 dat(0, i) = CInt(Int(100 - 1 + 1) * Rnd()) dat(1, i) = CInt(Int(100 - 1 + 1) * Rnd()) dat(2, i) = CInt(Int(100 - 1 + 1) * Rnd()) Chart1.Series("系列1").Points.AddY(dat(0, i)) Chart1.Series("系列2").Points.AddY(dat(1, i)) Chart1.Series("系列3").Points.AddY(dat(2, i)) Next Chart1.Series("系列1").ChartType = DataVisualization.Charting.SeriesChartType.Line Chart1.Series("系列2").ChartType = DataVisualization.Charting.SeriesChartType.Line Chart1.Series("系列3").ChartType = DataVisualization.Charting.SeriesChartType.Line End Sub End Class

回答No.2

>ご提案いただいたエクセルを直接表示できる方法ですが、当方も考えたのですが、 >エクセルのシートがいくつもあるので、毎回作成するのは手間がかかる為、 >エクセルのデータをそのまま取り込んで表示させるVBベースのプログラムを考えています。 それは、MSChartコントロール を使ってグラフを作成しようが、Excel の機能でグラフを 作成しようが、同じ事ではないのですか? それに、今まで、チャートコントロール扱った事がなければ、チョット無理かも知れません。 ましてや、ご自分で少しは調べて試す位の努力をしないと、新しい事に挑戦するのは...。 >また特にわからない点は、エクセルにあるデータ(A1からデータがはじまっているのではなく、 >AFの3からはじまり、3,6,9,12(行)に系列ごと(添付の黄色の部分)データ)が入力されていて、 >それをVBで読み取って、MSChartで表示するところがいまひとつわかりません。 Excel 上でマクロを取ってそのマクロを見れば解りませんか? ※ マルチポストをされていますね、以後、回答は控えさせて頂きます。

回答No.1

>★VB2008のMSChartコントロールで下記のように表示したいです!! VB2008には、MSChartコントロールはありません。 MSChartコントロールは、VB6.0 に付属しているものです。 もちろん、VB2008 でも使用する事はできますが、その場合VB6.0の ライセンスが必要です。 Excel のデータを使ってグラフを作成するなら、MSChartコントロールで作成しなくても Excel でグラフを作成して、それをVB2008上に表示したらいかがでしょうか? MSChartコントロールで表示するにしても、貴方は、どこまでできて どこが解らないのでしょうか? VB6.0 でなら、MSChartコントロールを扱えるのでしょうか?

Techno1224
質問者

補足

ご回答有難うございます。ちなみにMSChartはVisualStudio2008用に下記のサイトからインストールしました。ちなみに, MSchartの扱いは初めてです。VBでのプログラムはできます。http://code.msdn.microsoft.com/mschart ご提案いただいたエクセルを直接表示できる方法ですが、当方も考えたのですが、エクセルのシートがいくつもあるので、毎回作成するのは手間がかかる為、エクセルのデータをそのまま取り込んで表示させるVBベースのプログラムを考えています。 また特にわからない点は、エクセルにあるデータ(A1からデータがはじまっているのではなく、AFの3からはじまり、3,6,9,12(行)に系列ごと(添付の黄色の部分)データ)が入力されていて、それをVBで読み取って、MSChartで表示するところがいまひとつわかりません。 説明不足で恐れ入りますが、以上、宜しく御願致します。

関連するQ&A

  • エクセルのデータをVB2008でグラフ化する方法

    はじめまして。VB初心者です。 エクセルからデータを取り出し、VB2008のMSChartコントロールを使って、マーカー無しの平滑線の散布図を作ろうと思っています。まだVB初心者で、プログラム作るのに苦労しています(汗)。エクセルから下記のようにランダムにデータを取り出して表示する方法わかる方いましたらご教示お願いします。(サンプルコードありましたら助かります!!) ★VB2008のMSChartコントロールで下記のように表示したいです!! (1)エクセルにあるデータは、A1からデータがはじまっているのではなく、AFの3からはじまり、3,6,9,12(行)に系列ごとにデータが入力されます(下記のエクセルデータ例参考)。 (2)VBでの表示は↓ののようにしたいです!!X軸はエクセルデータの列となり、値は1からはじまりエンドは任意となります。Y軸は測定データで、12.3. 13.5等となり、エクセルのAFから入力した数値となります。系列はエクセルの行となり、表示は系列をすべて重ねて表示します。 【例】      1    2   3   4 ・・・(X軸) 系列1 12.3  13.5  13.4  20.3・・・(Y軸) 系列2 13.3  12.5  11.4  22.3・・・(Y軸) ・ ・ 【エクセルデータ】    AF   AG    AH    AI ・・・(列) 3 12.3  13.5  13.4  20.3・・・・・→系列1 6 13.3  12.5  11.4  22.3・・・・・→系列2 9 11.3  13.5  13.4  20.3・・・・・→系列3 12 15.3  13.5 13.4  20.3・・・・・→系列4 (行) 以上、宜しく御願致します。

  • エクセルのシート中のデーターをMSchartでグラフ表示したい

    エクセルを使うのだったらそのままグラフを表示させればよい。 と思われる方が多いだろうと思いながら質問させていただきます。 エクセル上でフォームを作成し、その上へMSchartコントロールを貼り付けます。 そして、現在アクティブになっているシートのA1~A20のデーターをもとにグラフを表示させたいと思っています。 この時、A1~A20のデーターを直接MSchartで読み込む方法がありますでしょうか。 よろしくお願いいたします。

  • vb6 MSChartでグラフを描く方法

    VB6で、RS232を用いて測定器から出力される測定結果をPCへ取り込み、MSChartでグラフ化したいと考えています。 現在、PCへ測定データを取り込むことは出来ましたが、MSChartを使用してグラフ化することが出来なくて悩んでいます。 ※測定データは、Form1に配置したテキストボックスに下記のようなデータが記録されます  グラフ化に必要なデータは、OKを除く1列目と3列目のデータだけです。 このデータからグラフを作成する方法はないでしょうか。 また、データは0.01s単位で受信するため、受信するたびにグラフが更新されて、レコーダのようにリアルタイムで結果をグラフ化したいと思っています。 みなさん御教授いただけないでしょうか。 できましたら、コードを教えて頂けたらうれしいです。 御願いします <受信するデータ> 0.01 OK 55.1 0.02 OK 55.2

  • エクセル2007で複数系列の折れ線グラフ作成方法

    60名の子どもの体重の月ごとの推移を折れ線グラフにしたいのですが、エクセル2007でデータの範囲を選択し、折れ線グラフで自動作成しても、系列が月ごとになってしまい、X軸にも中のデータがごちゃごちゃと目盛りとして表れてしまいます。 ちなみに、データは1行に一人の子どもの1カ月目から40カ月目の体重を入力しています。 「データの選択」で、X軸を月ごとの目盛りに変えることはできましたが、系列のラベルとデータの範囲は60名分のデータを一つずつ選択しなおさなければならず、処理速度も遅いので時間がかかって仕方がありません。 よい方法がありましたらお知らせください。お願いします。

  • エクセルのグラフ操作

    エクセルで複数のデータ系列を1つのグラフに表示させていますが、たくさんありすぎて見えにくい場合があります。ラジオボタンで、データ系列ごとに表示・非表示を簡単に出来る方法を教えて下さい。 VBはサンプルプログラムを数年前に作ったきり知識は皆無に等しいです。 よろしくお願いいたします。

  • VB6.0でMSChartをタイマーを使い徐々にグラフを伸ばしたい。

    VB6.0でMSChartをタイマーを使い徐々にグラフを伸ばしたいのですが、上手くいきません。コマンドボタンを使いクリックしたと同時にタイマーを作動させて、ある値までグラフを増加させたいと思っているのですが、初心者同然なので詳しくお願いします。 Dim dat(4, 3) As Integer Dim a As Long Private Sub Command1_Click() With MSChart1 .chartType = VtChChartType3dBar .ColumnCount = 3 .RowCount = 4 For i = 1 To .RowCount For j = 1 To .ColumnCount .Column = j .Row = i .Data = dat(i, j) Next j Next i .DataGrid.ColumnLabel(1, 1) = "(1)" .DataGrid.ColumnLabel(2, 1) = "(2)" .DataGrid.ColumnLabel(3, 1) = "(3)" .DataGrid.RowLabel(1, 1) = "1月~3月" .DataGrid.RowLabel(2, 1) = "4月~6月" .DataGrid.RowLabel(3, 1) = "7月~9月" .DataGrid.RowLabel(4, 1) = "10月~12月" .Visible = True End With Timer1.Enabled = True End Sub Private Sub Form_Load() a = 0 MSChart1.Visible = False End Sub Private Sub MSChart1_OLEStartDrag(Data As MSChart20Lib.DataObject, AllowedEffects As Long) End Sub Private Sub Timer1_Timer() a = a + 10 dat(1, 1) = a: dat(1, 2) = 100: dat(1, 3) = 110 dat(2, 1) = 30: dat(2, 2) = 110: dat(2, 3) = 110 dat(3, 1) = 40: dat(3, 2) = 120: dat(3, 3) = 110 dat(4, 1) = 50: dat(4, 2) = 130: dat(4, 3) = 110 If a = 100 Then Timer1.Enabled = False End If End Sub

  • Excelのグラフ(2000)

    お世話になります 教えてください。 EXCEL2000です。 グラフを作成しています。 行のデータ数は39634行あります。 B列に時間、C列に数値があって、それをグラフにしたいのです。 x軸に時間、Y軸に数値にします。 でも、作成しても、エラーが出るのです。 「2-Dグラフで入力できるデータ要素の数は1系列あたり最大32000個です。32000個以上のデータ要素を使用する場合は、複数の系列を作成してください。」 というようなエラーです。 まあ、たしかにデータ数は32000個以上ありますが。。。 これはいったいどういうことでしょうか? じゃあ、2系列作成すればいいのかと、グラフウィザードの、(散布図)系列タブで、「系列」のところに「系列1」しかないのをその下の「追加」ボタンを押して「系列2」を追加しました。 エラーによると、「系列1」だけでは作成されないグラフ分を系列2でおぎなっているのだろうかと思いましたが、出来上がったグラフを見ると、すっかり系列1と系列2が重なっているのです。すっかりわからなくなりました。 デフォルト設定が系列1が青色、2がピンクだったので、 どちらも同じ色にしたいと思いましたが、系列2のほうが上にかさなっていて、おかげで系列1が選択できず、「データ系列の書式設定」をしようにもできません。 すっかりかさなっているグラフをそれぞれの系列を選択するにはどうしたらよいでしょうか? グラフをきちんと作成するにはどうしたらよいでしょうか?2系列?うまくつくるにはどうしたらよいでしょうか?

  • エクセルでグラフの目盛りを自由に決めたい

    エクセルでグラフを作っているのですが、X軸とY軸に目盛りを打つときに勝手に目盛りがついてしまって困っています。 例えば、エクセルには1000kg、2000kg・・・とデータを入力していって、グラフでは1t、2t・・・と目盛りを打つような具合に、エクセルに打ち込んだデータでグラフを作った後に、そのデータとは全く関係のない新たな目盛りを打ちたいのです。 そのようなことは出来るのでしょうか。

  • EXCEL グラフの描き方

    EXCELで、系列Aを横軸に、系列B,Cを縦軸にとって 散布図を描こうとしています。 系列Bと系列Cのデータは単位も桁も違いますが、 一つのグラフに並べて挙動が分かりやすくなるように プロットしようとしたとき、 2種類の軸目盛を別々に設定することはできますか? どなたか、教えていただけるとうれしいです。

  • Excelで複数行のデータを1つのグラフに

    Excel2002(officeXP)を使っています。それで80000点のデータを1つの折れ線グラフに表示したいのですが、32000を超えると複数行にして系列を分けてください。とコメントされてます。それで複数行に分けて系列を分けたのですが、そうすると番号順にグラフを描画するため系列が重なってしまいます。 80000点すべてでなくても、32000点以上のデータを1つのグラフに表示する方法をご存知の方は教えてください。