web-dev-qa-db-ja.com

Excel 2007で比例サイズの円グラフを並べて作成するにはどうすればよいですか?

次の2つのデータセットを含むピボットテーブルがあります。

           2011    2012
Slice A      45      20
Slice B      33      28
Slice C      22       2

2011年のデータと2012年のデータの2つの円グラフを並べて表示しようとしています。各円グラフの相対サイズに合計を反映させたい。つまり、2011年のデータを含む円グラフ(合計100)は、2012年のデータを含む円グラフのサイズ(合計50)の2倍にする必要があります。

'pie of pie'チャートタイプは私が探しているものに最も近いようですが、これは1つのスライスからデータを分割し、2番目の図に表示するため、ここでは適切ではありません。

2
Andrew Doran

同じことをするようにこのバブルチャートを変更しました。それはあなたにいくつかのアイデアを与えるかもしれません。

http://www.andypope.info/charts/piedatamarkers.htm

1
Dawn

次のマクロを試してください。

それは私にとってうまく機能します、申し訳ありませんが私はより完全な答えを提供する時間がありません

Sub graph()
'
' Pie chart Resizing Macro by David Birch
' will resize and centre a chart relative to a maximum value entered below. This maximum MUST be changed per set of graphs
' USAGE :
' 1) simply set the "Max Tota Over All Graphs" variable
' 2) select a graph
' 3) run the macro
'
' Keyboard Shortcut: Ctrl+g
'

' CONFIG
    MaxTotalOverAllGraphs = 20000 ' THIS VALUE MUST BE CHANGED for each use of this macro (each set of charts)
    MaxChartDiameter = 200 ' This value may also be changed


' start of macro

    XPieChartMargin = (ActiveChart.ChartArea.Width - MaxChartDiameter) * 0.5
    YPieChartMargin = (ActiveChart.ChartArea.Height - MaxChartDiameter) * 0.5

    ThisGraphTotal = Application.WorksheetFunction.Sum(ActiveChart.SeriesCollection(1).Values)

 '   MsgBox ThisGraphTotal

    MaxChartArea = 3.14159 * (MaxChartDiameter / 2#) * (MaxChartDiameter / 2#)
    MaxChartAreaPerUnit = MaxChartArea / MaxTotalOverAllGraphs

    ThisGraphArea = ThisGraphTotal * MaxChartAreaPerUnit
    ThisGraphDiameter = 2# * ((ThisGraphArea / 3.14159) ^ (0.5))

'MsgBox ThisGraphDiameter

    ActiveChart.PlotArea.Width = ThisGraphDiameter
    ActiveChart.PlotArea.Height = ThisGraphDiameter
    ActiveChart.PlotArea.Left = XPieChartMargin + (0.5 * (MaxChartDiameter - ThisGraphDiameter))
    ActiveChart.PlotArea.Top = YPieChartMargin + (0.5 * (MaxChartDiameter - ThisGraphDiameter))


End Sub
1
GreyCloud

時間に追われている場合は、代わりにドーナツまたはレーダーの図を参照しますが、このリンクは同じ質問をしているようです... http://www.andypope.info/charts/pies.htm -フォーラムのすぐそばで私のものではありませんか?すべての最高のデイブ

0
David

プロット領域を選択し、コーナーをドラッグして、円のサイズを変更できます。

SU321317 example

「目で」が十分に正確でない場合は、以下のように1つのパイの直径を測定します。

  1. 各円の1つの直径を列の境界に配置します(たとえば、2011年の左側はF/Gにあります)。
  2. G/H境界を円の右側(ここでは219ピクセル)にドラッグしますが、元の位置に戻します。

次に、他の円の必要な直径(ここでは155ピクセル)を計算し、必要に応じてプロット領域の境界を調整します(試行錯誤を繰り返します)。

マクロバージョンを追加するために編集:

Sub Macro1()
Range("C2:C4").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[1]*SUM(R2C[-1]:R4C[-1])/SUM(R2C[1]:R[2]C[1])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C4"), Type:=xlFillDefault
Columns("B:B").Select
Selection.EntireColumn.Hidden = True
Range("A1:C4").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet1 (2)'!$A$1:$C$4")
ActiveChart.ChartType = xlPie
Columns("A:C").Select
Selection.EntireColumn.Hidden = False
Range("A1:B4").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range("'Sheet1 (2)'!$A$1:$B$4")
ActiveChart.ChartType = xlPie
End Sub
0
pnuts