- ベストアンサー
エクセルでの積み上げ棒グラフを作成した際に、その積上棒グラフ内に比率を表示したい
エクセルで100%の積上げ棒グラフでないもの(高さが様々な棒グラフ)を作成した際に、その積上げた棒グラフの1本1本を各100%として、各積上げ表示した棒グラフ内にその値の比率を表示する事はできますか? 全部高さを同じにする100%積上げ棒グラフの作成方法はわかるのですが、同じ高さにはしたくなく、各棒が色々な高さで比較でき、かつ、その1本の中でのまたその積上げている値の比率を表示したいものです。 何方かわかる方、ご教授下さい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
ANo.3 です。 VBA Sample これを標準Moduleにでも貼り付ける。 作成した積み上げグラフをクリックして選択してからこのSubを実行する。%はVBAで計算するので、普通の積み上げグラフを作ればよい。データラベルもつけなくてよい。系列の色や線によってはラベルが見にくいこともあるが書式の変更も可能なのですが。 元データが変更されると自動では対応していない。自動ですることも可能だけど。 コードの中身はちょっと難しいかもしれない。 Sub replace2ratio() Dim ptdata(), pttotal() With ActiveChart 'データ個数取得 scn = .SeriesCollection.Count orgdata = .SeriesCollection(1).Values lb = LBound(orgdata) ub = UBound(orgdata) ReDim ptdata(scn, ub), pttotal(ub) '元データ取得 For sc = 1 To scn orgdata = .SeriesCollection(sc).Values For pt = lb To ub ptdata(sc, pt) = orgdata(pt) pttotal(pt) = pttotal(pt) + ptdata(sc, pt) Next Next '%を計算してセット For sc = 1 To scn For pt = lb To ub ptdata(sc, pt) = Round(ptdata(sc, pt) / pttotal(pt) * 100, 1) & "%" .SeriesCollection(sc).Points(pt).DataLabel.Characters.Text = ptdata(sc, pt) Next Next End With End Sub
その他の回答 (4)
- fukuchan7
- ベストアンサー率51% (156/302)
No1.です。補足拝見しました。 VBAを使えば楽にできると思うのですが、VBAは分かりませんが、わたしの方法は手動でNo3.さんと同じ方法ですので回答は控えさせていただきます。。
お礼
ありがとうございました。 手動にて試してみます。
- okormazd
- ベストアンサー率50% (1224/2412)
できないことはありませんが、手動でやるか、VBAになります。 元のデータの表に%のデータを追加しておきます。 1.普通の積み上げグラフを作ります。 2.グラフにデータラベルを追加します。 3.グラフのデータラベルのところを、ゆっくりとダブルクリックします。 4.もう1度クリックすると、データ入力できるようになりますから、実データを消して、%データを入力します。「%」をつければ、「25.3%」のような表示になります。 5.これをデータの数だけ繰り返す。 大変だね。 で、 VBAなら楽。
お礼
ありがとうございました。 VBAなら楽とのことですが、sampleの記述を教えていただく事はできますか? VBAは明るくなく、きっかけがあったら試して見たいとは思いつつ取っ掛かりが無く今回をきっかけにさせて頂ければと思い、なにかヒントでも結構ですので・・・ よろしくお願いします。
- koko88okok
- ベストアンサー率58% (3839/6543)
Excelのグラフ機能には、ご希望のようなグラフの値を表示する機能はないように思います。 次のような表示方法は如何でしょう。 1) 邪魔にならない場所に、表示したい値の表を作成します。 2) テキストボックスを挿入し、カーソルが表示されているのを確認して、数式バーにカーソルを移動します。 3) 1)で作成した表のセルの参照式を入力して「Enter」を押します。 4) テキストボックスに参照したセルの値が表示されますので、グラフの希望の位置に移動します。 5) 上記の操作を必要回数繰り返します。 元データが変更される場合に備えて、表示する値の表は元データを使った数式で表示しておきますと、参照式で表示したテキストボックスの値も自動的に変更されます。 なお、テキストボックスにセルの値を表示する操作の詳細は、下記URLをご参照ください。 「テキストボックスに任意のセルのデータを表示させる」 http://pc.nikkeibp.co.jp/article/NPC/20060213/229154/?set=dl_excel
お礼
ありがとうございました。 やはり、テキストボックスを使用するしかないようですね。 試してみます。
- fukuchan7
- ベストアンサー率51% (156/302)
出来ないことはありませんが、 1、Y軸目盛がそれぞれのグラフに対応しなくなりますが、それでよいのでしょうか? 2、棒グラフ内にその値の比率を表示するのであればY軸目盛はあえて必要がないと思うのですが・・・ 以上2点について補足して下さい。、
補足
できればY軸目盛は表示希望です。 1本の中の積上げている各値についての表示という点では不必要ですが、各色々な高さの棒が表示されているため、その1本の積上げた合計値がY軸目盛により表示されればいいな、と考えています。 よろしくお願いいたします。
お礼
VBAのsampleありがとうございます。 早速試しみますね