- ベストアンサー
ExcelVBAでの折れ線グラフ
ExcelVBAでグラフを作る方法を教えてください。 問題はデータの取り方なのです。 国語 算数 英語 1位から10位 10~9 10~8 10~ 11位から20位 8~6 7 ~5 9~7 21位から30位 5~4 4~2 6~4 と成績順になっているのですが、これを折れ線グラフにプロットしたいと思っています。 ですが、これには決まりがあります。 10位・11位・20位・21位・30位 の成績をグラフに打ちたいと思っています。 例えば「国語」の場合だと、 「10位-9、11位-8、20位-6、21位-5、30位-4」プロットして折れ線を作りたいと思っています。 このとき問題なのは、項目となる数値に「*位から*位」と*以外の余計な数値が入っていること。 成績においては「~」が入っていることです。 英語のように「~」の右側がない場合は、左側の数値を持ってくることになっています。 少々複雑なのですが、このようなプロットを打ちたいと思っています。 DBベース自体を整理してしまえば楽なのでしょうけど、これはほんの一例で、量が多すぎてそれが面倒です。 それをマクロで別シートにとろうかとも思ったのですが、それもうまくいきませんでした. わかりにくいのですが、何かよい方法はありませんでしょうか? よろしければ教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
この質問は問題点が掴み難い。それで一部だけ。 >このとき問題なのは、項目となる数値に「*位から*位」と*以外の余計な数値が入っていること。 Split関数の利用が良いでしょう。 下記を参考に。 Sub test02() s = Cells(1, 1) 'セルA1と仮定 s1 = Split(s, "~") MsgBox s1(0) If s1(1) = "" Then s1(1) = s1(0) End If MsgBox s1(1) End Sub ●さて上記2つ値が決まったとして、2つの値で(株価グラフのように)グラフ化するのですか ●> と成績順になっているのですが、 国語・算数・英語の別々に3表(シートのことを言ってるのではない、同一シート内であっても)あるということですか。 ●順位番号は表上に出ているのですか ●質問を答える上で 国語 算数 英語 1位から10位 10~9 10~8 10~ 11位から20位 8~6 7 ~5 9~7 21位から30位 5~4 4~2 6~4 は影響ある(考える必要)のですか。 既に表上(内)に具現している内容で、説明しただけですか ●>10位・11位・20位・21位・30位の成績をグラフに打ちたいと エクセルグラフは、エクセルシート上のデータをグラフ化するものです。 飛び飛びの値をグラフ化したければ、飛び飛びの値をシート上に「それだけでまとめて」、データ表として作らないといけないと、私は理解してますが(プログラム内配列など別にして、そうでない方法あるかも)、そのデータは作れますか(作る余地や作ることが許されてますか)
その他の回答 (1)
- keikan
- ベストアンサー率42% (75/176)
とりあえず、数字の分割からA1に"○位~○位"が入っていたとします。 まず左側=LEFT(A1,SEARCH("位",A1)-1) 右側=IF(RIGHT(A1,1)="~","",MID(A1,SEARCH("~",A1)+1,SEARCH("位",A1,SEARCH("位",A1)+1)-SEARCH("~",A1)-1)) 一応これでポイントすべき値が得られると思います あとは、表記の意味がいまいちわからないので、 何かあれば補足してください。
お礼
回答ありがとうございます。長い夏休みで留守にしていました。お礼が遅くなってすみません。 わかりにくい内容で申し訳ないです。私自身・・・途方に暮れていた内容ですので、うまく説明できずにいました。 それなのに真摯な回答ありがとうございます。感謝しております。
お礼
回答ありがとうございます。お礼が遅くなってすみません。わかりにくい内容のものに、詳しい説明をしていただき感謝しております。 私もいろいろなことをいっぺんにしていて、なかなかまとまらずにおりまして、拙い説明で申し訳ない限りです。 データは・・・作ることをやっと許されてきた段階です。でも制約だらけです。その中でのVBAなので苦労しております。 夏休み明けましたら試させて頂きます。わかりにくいのに本当に詳細にありがとうございました。