- ベストアンサー
表から円グラフを作るまで
- Excel2000を使用して、表から円グラフを作成する方法について教えてください。
- 特定のデータを基に、円グラフを作成したい場合、Excelの機能を使うことで簡単に実現できます。
- 表データが追加や変更された場合でも、円グラフは自動的に更新されるように設定することも可能です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1さんの丁寧なご説明で十分と思いますが、ピボットグラフという手もありますね。 一列だけのデータを元に、行のフィールドと、データアイテムに同じ列をドロップしてやり、集計を「データの個数」にします。 Microsoftのこんな解説があることを初めて知りました。 ピボットテーブルウィザード 1/3で、ピボットグラフの方を選択して下さい。 http://www.microsoft.com/japan/office/previous/xp/suminaka/excel/sousa/2000/kihon2_1.htm データ列に動的な名前をつけて、上記ピボットテーブルのデータソースをこの名前に設定しておくと、以後、新しいデータを追加したら、ピボットテーブルの右クリックメニューから「更新」を実行するだけで、ピボットグラフを含め更新されます。 http://office.microsoft.com/ja-jp/excel-help/HA001126115.aspx VBAでの作成もおさらいしてみました。割合の大きい順に並び替えるには更に一工夫必要です。データが一番左のワークシートにあるとしています。メモリー上で集計する興味本位のコードですのでご参考にならないかもしれません。 Sub test() Dim myWbk As Workbook Dim mySh As Worksheet Dim hitRange As Range, targetRange As Range Dim buf As Variant Dim i As Long Dim searchWord As String, myKey As String Dim myDic As Object Dim myChart As Chart, mySeries As Series searchWord = "ドロップアイテム" Set myWbk = ThisWorkbook Set mySh = myWbk.Worksheets(1) Set hitRange = mySh.UsedRange.Find(What:=searchWord _ , After:=mySh.UsedRange.Cells(1) _ , LookIn:=xlValues _ , LookAt:=xlWhole _ , SearchOrder:=xlByRows _ , SearchDirection:=xlNext _ , MatchCase:=False _ , MatchByte:=False) If hitRange Is Nothing Then Exit Sub With mySh Set targetRange = .Range(hitRange.Item(2), hitRange.End(xlDown)) End With buf = targetRange.Value Set myDic = CreateObject("Scripting.Dictionary") For i = 1 To UBound(buf, 1) myKey = CStr(buf(i, 1)) If Not myDic.exists(myKey) Then myDic.Add myKey, 1 Else myDic(myKey) = myDic(myKey) + 1 End If Next i Set myChart = Charts.Add(Before:=mySh) myChart.ChartType = xlPie Set mySeries = myChart.SeriesCollection.NewSeries mySeries.XValues = myDic.keys mySeries.Values = myDic.items myChart.HasTitle = True myChart.HasLegend = False myChart.ChartTitle.Text = hitRange.Value mySeries.ApplyDataLabels xlDataLabelsShowLabelAndPercent End Sub
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
まず基本の知識として、エクセルでグラフを描かせるためには、「やくそうが5個ある」のように実際にグラフにする「数字」をどこかで一回はセルに記してやらないと、何も進みません。 手順1:シート2に「ドロップアイテムの一覧」を自動で収集する シート1のE列にドロップアイテム列を用意する シート2のA1に「ID」 シート2のB1は一マス空けて シート2のC1に「アイテム」 シート2のD1に「個数」 とそれぞれ記入する シート2のA2に =IF(COUNTIF(Sheet1!$E$2:E2,Sheet1!E2)=1,COUNT($A$1:A1)+1,"") と記入、下向けに「大量に」コピー貼り付けておく C2に =IF(ROW(C1)>MAX(A:A),"",LOOKUP(SMALL(A:A,ROW(C1)),A:A,Sheet1!E:E)) と記入、下向けにそこそこコピー貼り付けておく D2に =IF(C2="","",COUNTIF(Sheet1!E:E,C2)) と記入、下向けにそこそこコピー貼り付けておく 手順2:円グラフを作成する準備をする 挿入メニューの名前の定義を開始する 名前 myList 参照範囲 =Sheet2!$C$2:INDEX(Sheet2!$C:$C,COUNT(Sheet2!$D:$D)+1) と記入し、追加する 名前 myCount 参照範囲 =Sheet2!$D$2:INDEX(Sheet2!$D:$D,COUNT(Sheet2!$D:$D)+1) と記入し、追加する 手順3:実際に円グラフを作成する ここまで作成したブックを、例えばbook1.xlsというブック名で一回保存する 暫定的にD列の数字範囲を選んで円グラフをふつーに描き始める グラフウィザードの2/4画面で系列タブを開く 名前 =Sheet2!$D$1 値 =book1.xls!mycount 項目軸ラベル =book1.xls!mylist とそれぞれ記入しOKする。 必要に応じてデータラベルでパーセントを表示させる 以上でシート1のドロップリストに追記していけば、グラフの反映まで全自動でやってくれます。
お礼
丁寧なご説明、ありがとうございました。 おかげで、やりたかったことができました。 ありがとうございました。
お礼
丁寧なご説明、大変ありがとうございました。 ピボットテーブルの使い方を、改めて知ることができました。 おかげで、やりたいと思っていたことが実現できました。 やはりExcelは便利ですね。 ありがとうございました。