電子書籍の厳選無料作品が豊富!

簡単な操作でExcel2007 円グラフの判例の上位項目表示をしたいのですができますか?

ある項目と%をグラフ中に判例として表示させるのですが、
項目数は1000以上ありまして、しかしながら上位10項目ぐらいで全体の
80%程度を占めている状況です。いわゆるロングテールな状態と言えます。

上位10項目だけを判例上に表示させ、他を非表示にしたいのですが、
簡単にそれをしたいと考えています。
(例えば「上位10項目まで表示」とか指定できたらありがたいのですが..)

判例の項目単体をクリックしてDelキーで指定項目のみの表示削除はできるよう
ですが、この方法だと項目数が1000近くになるため大変な作業になります。

よろしくお願いします。

A 回答 (4件)

凡例項目を削除するVBAの例です。


降順にプロットされていることが前提条件です。
グラフを選択しておいて実行してください。
(例1)
Dim i As Long
ActiveChart.Legend.Delete
ActiveChart.HasLegend = True
With ActiveChart.Legend
For i = .LegendEntries.Count To 11 Step -1
.LegendEntries(i).Delete
Next
End With
    • good
    • 0
この回答へのお礼

ありがとうございます。VBAは詳しく理解していませんが、逆に通常ではできないのでしょうね。。
1000項目のケースは不要としても、全部で30項目の場合など、適宜活用できそうですね。参考にしてみます

お礼日時:2013/01/26 17:44

1,000 個もあったら、円グラフの中に載せたとしても、それを見た人は読み取れませんよね。

平均で 0.1 % ですからね。

既に出ている回答にもあるように、ムリヤリ凡例のみ非表示にしようと思えば、VBA における Legend オブジェクトの操作でできます。けれど、図解の手法として本当にそれでよいのか、見直してみたほうがよいでしょう。

No.2 さんのように、「その他」などの項目を作って一まとめにするというのが通常の方法だと思いますので、それをお勧めします。グラフだけでなく、人に見せる表とか、箇条書きであっても、同じことです。

ベストアンサーは辞退します。
    • good
    • 0
この回答へのお礼

ありがとうございます。質問内容内の意図している作業自体がナンセンスという解釈ですね。おっしゃるとおりと思います。方法論といてのご回答も一応いただけたようですので参考にしてみます。

お礼日時:2013/01/26 17:47

数値データを判定するようにしてみました。


プロット順は影響しません。
(例2)
Dim rng As Range
Dim v As Variant
Dim i As Long
With ActiveChart
.Legend.Delete
.HasLegend = True
With .SeriesCollection(1)
v = .values
Set rng = Range(Split(.Formula, ",")(2))
End With
With ActiveChart.Legend
For i = UBound(v) To 1 Step -1
If WorksheetFunction.Rank(v(i), rng, 0) > 10 Then
.LegendEntries(i).Delete
End If
Next
End With
End With
    • good
    • 0
この回答へのお礼

詳解にありがとうございます。全く中身がわかりませんがご参考にさせて頂きます。

お礼日時:2013/01/26 17:49

こんにちは!


ご希望の方法ではないのですが・・・

一案として、
元データの最終行に
11位以下すべてを合計した行を設け
分類を「その他」とし

Ctrlキーを押しながら上位10位と最後の合計した行の分類・データを範囲指定 → 円グラフ作成

これで↓のようなグラフになります。

これではダメですか?m(_ _)m
「Excel2007 円グラフの判例の上位」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。1000項目のケースとしてご回答いただいた「その他」でまとめるのは合理的だと思います。全部で30項目の場合なども想定してできれば下位項目をひとまとめにせずにできればありがたかったというところですが参考にさせていただきます。

お礼日時:2013/01/26 17:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!