VBAのグラフ(条件選択)作成について

このQ&Aのポイント
  • VBA入門レベルのものですが、クラスや教科、年月を選択して折れ線グラフを作成する方法を教えてください。
  • データベースに記述されたクラスと教科の成績データから、プルダウンセルで条件を選択してグラフを作成します。
  • クラスを複数指定することも可能です。INDEXやMATCH関数を使用してもうまくいかないため、解決策を教えてください。
回答を見る
  • ベストアンサー

VBAのグラフ(条件選択)作成について

こんにちは。VBA入門レベルのものですが教えてください。 以下の内容のデータベースがエクセルに記述済みと仮定します。 ◆シート(2年A組)     1     2     3     4 A      国語  数学  英語 B H21.1  70   60   55 C H21.2  80   75   90 D H21.3  69   87   67 E H21.4  75   72   57 ◆シート(2年B組)     1     2     3     4 A      国語  数学  英語 B H21.1  55   85   87 C H21.2  62   24   63 D H21.3  95   59   85 E H21.4  68   96   56 (以下、縦軸はH21.5、6、7…、シートはC組、D組、E組…、と続く) このデータベースから、以下の内容で 折れ線グラフを作成したいと考えています。 ・グラフタイトル⇒クラス(2年○組) ・系列⇒教科 ・X軸⇒年月(H21.△) ・Y軸⇒点数 ただし、例1のように 年月(始~終)、クラス、教科を都度プルダウンセルなどで選択し、 各条件に応じたグラフが得られるようにしたいのです。 (クラスは、例2のように複数クラスを同一グラフ上に見られればなお良しです。) 例1)2年A組における数学のH21.2~H21.5のグラフを作成 例2)2年B組とC組における英語のH21.3~H21.7のグラフを作成 ※クラス名、教科名、年月名、データベース位置やプルダウンセル位置は不変。グラフ出力位置は不変。 私なりにINDEXやMATCH構文などを使いましたがなかなかうまくいきません…。 長々とすみませんが、どなたかご教示をお願いいたします。

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

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

どう上手くいかないのか、試されているコードを現状のまま提示して相談されると良いと思います。 サンプルです。 グラフとデータ表等は同じシートにあると仮定しています。 全クラスプロットされます。 グラフをアクティブにして実行してください。 セル番地、シート名等は実際に合わせて書き換えてください。 Sub test1() Dim ws As Variant Dim rs As Long Dim re As Long Dim c As Long Dim val As Range Dim xval As Range Dim i As Integer ws = Array("A組", "B組", "C組", "D組", "E組") With WorksheetFunction rs = .Match(Range("E2").Value, Range("A1:A13"), 0) re = .Match(Range("E3").Value, Range("A1:A13"), 0) c = .Match(Range("E1").Value, Range("A1:D1"), 0) End With With ActiveChart For i = 0 To UBound(ws) With Worksheets(ws(i)) Set val = .Range(.Cells(rs, c), .Cells(re, c)) Set xval = .Range(.Cells(rs, 1), .Cells(re, 1)) End With If .SeriesCollection.Count = i Then .SeriesCollection.NewSeries With .SeriesCollection(i + 1) .Values = val .XValues = xval End With Next i End With End Sub

raymay0905
質問者

お礼

丁寧なご回答ありがとうございました。 正直なところまだうまく実行できていませんが、 教えていただいた構文を元に こちらで勉強して加工してみたいと思います。

その他の回答 (1)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

VBAが使えるなら グラフデータシートを作って ドロップダウンで クラス、開始月、終了月、教科を選択するようにして グラフデータシートに貼り付けるようにしたほうがいいと思います。

関連するQ&A

  • 条件付きでグラフ作成

    シート1に A B C 1 りんご 100 200 2みかん 50    30 とあるとします これをシート2の折れ線グラフで、表示させるときはどうすればいいのでしょうか? やりたいことは、Aにりんごとあれば、B1,B2・・・・を表示 という条件付きの式を入れたいです。 グラフの表はひとつです。 そこに二つ以上のグラフを表示させたいです。

  • VBAでGANTのグラフを作成したい

    office365 ①GANT_DATAシートに計画と実績のGANTデータ ②GANTシートにガントのグラフを表示 したいです。 ①を元に②のグラフを自動で作成したい ガント表示させる構成は kotei1からkotei6までの計画開始計画終了実績開始実績終了の日時データがあり、Serial1からSerial2,Serial3とGANT_DATAのA列でデータがなくなるまでのガントグラフを表示。 Serialは+30行毎に計画と実績データをデータベースから持ってくる構成。 現状は、GANTシートにひな形としてのグラフを用意しておき、 データ範囲等を1ケ1ケグラフへ反映させてガントのグラフを表示させています。 下記のイメージです。 GANTシートでのSerial1のグラフは グラフデータの範囲:=GANT_DATA!$A$9:$C$20 系列1の系列値:=GANT_DATA!$B$9:$B$20 系列2の系列値:=GANT_DATA!$C$9:$C$20 軸ラベルの範囲:=GANT_DATA!$A$9:$A$20 GANTシートでのSerial2のグラフは グラフデータの範囲:=GANT_DATA!$A$39:$C$50 系列1の系列値:=GANT_DATA!$B$39:$B$50 系列2の系列値:=GANT_DATA!$C$39:$C$50 軸ラベルの範囲:=GANT_DATA!$A$39:$A$50 の様にガントシートのデータ範囲を設定しておき、 GANT_DATAへデータをデータベースから持ってきたらガントのグラフが表示できる構成にしているのですが、グラフの数が増えると上記データ範囲の設定をするのも大変なので、①のシートから②のガントグラフを自動で作成できる様にしたいです。 VBAベタで教えていただきたくよろしくお願いします。 グラフの軸設定はなんとかなると思うので、根本のグラフ表示部分を作成する構成を教えていただけたらと思います ※ GANTグラフには工程間に細く青い線をしきりで入れてます。 これも実現化であれば教えていただきたく。 現状は実線をグラフへコピペで貼り付けています。

  • EXCEL2010 VBA 複数の条件のグラフ

    EXCEL2010のVBAでグラフを作成するコードを作成しています。 そのグラフでは指定した値で系列の数が変わります。 初期設定シートで指定値1と2を確認して指定値1が系列の数、指定値2がデータ範囲となります。 データ範囲はB列のB1から指定値2の数だけ下に増えます。 Sheet1にグラフを新規作成します。 (例) 指定値(A1):1の時 指定値(A2):20 グラフに表示される系列:(B1:B20) (例2) 指定値(A1):2の時 指定値(A2):20 グラフに表示される系列:(B1:B20)と(B21:B40) 説明が分かり辛いかもしれませんがよろしくお願いします。

  • 高3クラス選択で、5教科クラスか3教科クラスか

    現在高校2年で、春から高3になります。 現在僕の入っているコースはA組、B組の2クラスあり、僕はA組です。 3年次にはA組が5教科クラス、B組が3教科クラスになります。 今、5教科クラスにするか3教科クラスにするかすごく迷っています。 現在A組の生徒の中でB組にうつる生徒は少数です。 現在B組の方が学力が下です。 僕は(国立でもかまいませんが)私立大学に行くつもりです。 5教科クラスのメリット 現在のクラスとほぼ変わらないメンバーのため、人付き合いに気を遣わなくてすむ。 3教科クラスのメリット 文系で、数学・生物が苦手意識が強く嫌いで、テスト成績も悪く、あまり数学・生物の勉強もしたこともない自分にとって、 数学・生物をやらなくてすむのはうれしいし、自分にとっても3教科に集中した方がいいのかもしれない。 5教科クラスのデメリット 苦手な数学・生物を勉強しなければならない。 3教科クラスのデメリット 現在B組のクラスの生徒で知っている人がほとんどいない。 人付き合いがめっぽう苦手な自分にとって、新しいクラスメイトの中で快適に生活できるかものすごく不安。 どちらのクラスがいいと思いますか?すごく迷っています。 できれば今日の朝までに決断したいです。 アドバイスを下さい。

  • エクセルの棒グラフで異なるタイトルを同じグラフ上に作成

       a     b A   4   E   6 B  3   F   4 C  8   G   7 D   5   H   6 見にくくてすみません。 a,bというタイトルについてそれぞれA,B,C,DとE,F,G,Hという項目があって、その値が上のようだとする時、これを同じグラフ上に縦線グラフ(積み重ね)で表現したいのです。全体を選択して作ると凡例がA,B,C,Dしかできません。 E,F,G,Hの凡例も作るためにはどうすればよいでしょうか。

  • 複数条件を満たすVLOOKUP関数

    Excel独習者です。 次の3つのシートがあります。 「入力窓口」「M1組」「M2組」「M3組」 シート「M1組」「M2組」「M3組」には各クラスの生徒の出席番号(B列)と氏名(C列)が名票としてあります。 シート「入力窓口」のcells(C,6)にクラス名を入力します。 シート「入力窓口」のcells(H,7)に出席番号を入力するとcells(I,7)に該当クラスの該当番号の氏名が 表示されるようにcells(I,7)に次の式を入力しましたがエラー表示でうまくいきません。 =IF(H7="","",IF(C6="M11",VLOOKUP(H7,'M11'!$B$4:$C$11,2,IF(C6="M12",VLOOKUP(H7,'M12'!$B$4:$C$11,2, IF(C6="M13",VLOOKUP(H7,'M13'!$B$4:$C$11,2,))))))) どのような式を入力すべきかご助言いただけたら幸いです。 なお、OSはVISTA、Excelは2007です。 よろしくお願いいたします。

  • 棒グラフ作成について

    棒グラフのY/数値軸の表示を0h(時間)~450hで10h刻みで表示させたいのですが、軸の書式設定でのしかたが今一良く分からないので宜敷お願い出来ませんでしょうか? 個人の1ヶ月間の総労働時間は合計が出ています。 例:Aさん265h、Bさん257h、Cさん277h等で約10名分くらいのデータが有ります。

  • Excel VBA グラフ作成

    グラフを複数、自動で作成しようと思っています。 データは、 がっつり A  1 B  3 C  5 D  8 E  10 しっとり A  3 B  5 ・ ・ ・ 最初に「しっとり」などのような項目名が記してあり、 その後5行はデータになっています。 Aを選択した人が3人、Bを選択した人が5人などの意味です。 A2からデータが入っており、 グラフを作る個数は決まっておらず、表の個数により作成したいと思っています。 「Sheet1」にグラフを自動で作成するにあたり、 3つ質問があります。 マクロに「SampleGraphという名称で作ってみました。」 ----------------- Sub Sample_Graph() Dim i As Long Dim SampleChart As Shape i = 2 Set SampleChart = Worksheets("Sheet1").Shapes.AddChart With SampleChart.Chart .SetSourceData Range("'Sheet1'" & "A" & i + 1 & ":" & "B" & i + 6) .ChartType = xlColumnClustered .HasTitle = True .ChartTitle.Text = Range("A" & i) End With i = i + 7 End Sub ------------------------------ 質問1 実行すると、Set SampleChart = Worksheets("Sheet1").Shapes.AddChartのところで エラー438が出ます。どうしてこのエラーが出るのでしょうか? フォームにプログラムを書いて組んでいるのですが・・・ (フォームのボタン1をクリックしたら実行するようにしています) 質問2 グラフのサイズを決め、個数によって配置を変えたりしたいです。 Inputboxを使い、 ”何列にしますか?”というメッセージを表示 そして、数値を入力すると 3列でグラフ表示される 質問3 図のように、項目名とは別に 「Yes」「No」などを表示させたいです。 データに含むとおかしくなりますし、 かといってタイトルや系列名を変えることも難しいかと。 何か良い方法はありませんか? 以上、質問3点長々と書かせて頂きました。 分かりにくい点が多々ありますが、よろしくお願い致します。 せめて、グラフを作れるようにはなりたいと思っています!

  • Excelグラフの作成方法を教えてください

    初歩的な質問で恥ずかしいのですが、 特定の単語を拾ってExcelのグラフを作る方法を教えてください。 具体的には H6:H100まで、ある単語が入力されています。 (同様のシートがあと11つあります) 単語は例として、犬、猫、バラ、ユリ、おにぎり、オムライス等です。 更に単語は A群(動物)ー犬、猫 B群(植物)ーバラ、ユリ C群(食物)ーおにぎり、オムライス の3つの群に分かれている状態です。 上記の際、その群の項目だけのグラフを作成したいのです。 犬が●%、猫が●%のグラフ バラが●%、ユリが●%nグラフ・・・等。 グラフを作成するのはどの月も別シートとします。 作り方が分かりません。 ACCESS、マクロは分かりません。関数だけで処理は出来るものでしょうか。 ご存じの方ご教示いただければと思います。

  • エクセルでこんな条件でグラフ作成できますか?

    初心者でトンチンカンな質問をしていたらすみせん 以下のデータでグラフを作成するのに 1月~3月まではAさん~Eさんまで、4月からはAさんからCさんまでをグラフ範囲に指定し、一つのグラフにしたいのですが、可能でしょうか?   1月 2月 3月 4月 5月 Aさん   5 2 3 1 5 Bさん   2 6 5 2 6 Cさん   4 3 2 6 2 Dさん   6 5 3 3 4 Eさん   1 2 3 4 2 説明が下手で分かりづらいと思いますが、よろしくお願いします。

専門家に質問してみよう