重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

ピボットテーブルから、グラフを作成しています。

凡例を表示しているのですが、これを微調整したいと考えています。
(10ミリだけ左に動かすとか、5ミリ上に動かすとか)

基本、移動不可ということは認識してるのすが、何か裏技的なものはないでしょうか?


最終的には、画面のハードコピーを切り貼りするしかないかと思っているのですが、妙案はないでしょうか?

よろしくお願いします。

A 回答 (2件)

裏技では無く、回りくどくて良ければ。


ダミーシート(非表示でも可)を追加して、ピボットテーブル範囲を参照する数式をセットし、
さらにその範囲を参照して『普通のグラフ』を作ればできなくもないです。
『ピボットグラフの利点が必要ない、簡単なグラフの場合』という条件付きではありますが。

ピボットテーブルの更新に備えて、グラフの元データ範囲を可変にしたければ、[名前定義]とSERIES関数を使えば良いです。

'サンプルグラフを作ってみるコード
Sub try()
  Dim ws As Worksheet
  Dim n As String

  'データシート作成
  Set ws = Sheets.Add
  ws.Range("A1:B4").Value = [{"f1","f2";"a",1;"b",2;"c",3}]
  With ActiveWorkbook.PivotCaches.Add(xlDatabase, ws.Name & "!r1c1:r4c2") _
     .CreatePivotTable(ws.Range("D1"))
    .AddFields RowFields:="f1"
    .AddDataField .PivotFields("f2"), , xlSum
  End With
  With Sheets.Add
    n = .Name & "!"
    '参照式セット
    .Range("A1:B100").Formula = "=" & ws.Name & "!D1"
    '名前定義セット
    .Names.Add "cnt", "=match(""総計"",$A:$A,0)-3"
    .Names.Add "name", "=offset($A$3,,,cnt)"
    .Names.Add "data", "=offset($A$3,,1,cnt)"
  End With
  'グラフ作成
  With ws.ChartObjects.Add(300, 0, 300, 300).Chart
    .ChartType = xlPie
    .SeriesCollection.NewSeries.Formula _
       = "=series(," & n & "name," & n & "data,)"
  End With
  ws.Activate
  
  Set ws = Nothing
End Sub
適当なBookで実行するだけです。
マクロの内容はあまり気にせず、できたサンプルシートを参考にしてください。

#動作確認はwinXP/xl2003のみ。
#エラーで作成されなかったら捨て置いてください。

ピボットテーブルが必要ないのでしたら、ピボットテーブルをコピー、そのまま値貼り付けして
ピボット機能を削除すれば良いだけですが、さすがにそれはナシですよね?
    • good
    • 0
この回答へのお礼

>ピボットテーブルが必要ないのでしたら、ピボットテーブルをコピー、そのまま値貼り付けして

実は、それも考えたのですが(^^;;
できれば、他の方法がないかと思ってました。

マクロ、ありがとうございました!

お礼日時:2009/11/12 09:40

移動できませんか?


ドラッグで移動することは出来ると思います。
ただ手作業では、移動量を設定して移動することは出来ないと思います。

以下、Excel2007で確認しています。
まず凡例をクリックして凡例を選択します。
マウスの形が4方向の矢印状態で
凡例の枠線をドラッグしてください。
グラフ内の任意の位置に移動できます。

試しにマクロを組んでみました。
グラフを選択しておいてマクロを実行してください。
移動量を数値で指定しています。
例えば
- 10
のところを
+ 5
と、いうように、色々に変えて試してください。

Sub test1()
With ActiveChart
With .Legend
.Top = .Top - 10
.left = .left - 10
End With
End With
ActiveCell.Activate
End Sub
    • good
    • 0
この回答へのお礼

ドラッグできないんです。。。
ちなみに、エクセル2002です。

マクロありがとうございます!
早速試してみます!

お礼日時:2009/11/11 22:03

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