- ベストアンサー
Excelのグラフ作成で・・・
縦棒グラフを作成中です。 最大値を100にし、100を超える数値の場合、縦棒グラフを2本に分割し表示したいのですが、こういうグラフの作成はできますか? 説明がわかりにくい場合は、補足しますのでよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
(テストデータ)A1:A10に 34 45 35 46 123 32 145 23 17 67 (関数式) B1に=IF(A1<=100,A1,100)といれ、B10まで複写。 C1に=IF(A1>100,A1-100,"")といれ、C10まで複写。 (グラフを描く) B1:B10を範囲指定し、F11キーを押す。 (データの追加) メニューのグラフ-データの追加-(範囲)でsheet1のC1:C10を指定-OK で5と7番目の棒のとなりに棒グラフがくっついて表示されました。 ご質問に対し、これではダメなんでしょうか。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#1のものです。 #1の回答で大筋外れてなければ、A列にデータがあるとして、関数式を入れる手間を省くためVBAでやって見ました。 1つ使っていないシート(この例ではSheet2)を使います。 シート挿入でもして用意してください。 Sub Macro1() Dim sh1 As Worksheet Dim sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") '作業用 '------ g = 10 'データ数10行と仮定 mj = 1 For i = 1 To g n = sh1.Cells(i, "A") For j = 1 To 10 'データの数値1000以下仮定 If n <= 100 Then sh2.Cells(i, j) = n Exit For Else sh2.Cells(i, j) = 100 n = n - 100 End If Next j If j > mj Then mj = j Next i '------ Charts.Add ActiveChart.SetSourceData Source:=sh2.Range(sh2.Cells(1, 1), sh2.Cells(g, 1)) ActiveChart.Location Where:=xlLocationAsNewSheet ActiveChart.Location Where:=xlLocationAsNewSheet For k = 2 To mj ActiveChart.SeriesCollection.Add Source:=Range(sh2.Cells(1, k), sh2.Cells(g, k)), _ Rowcol:=xlColumns, SeriesLabels:=False, CategoryLabels:=False, Replace _ :=False Next k End Sub マクロの記録を少し手直ししたようなものですのでやって見てください。 なおグラフの各データ系列の色は違ったままにしたままです。データ系列の書式設定で色を統一してください。
お礼
マクロまで記述して頂いてありがとうございました。
- kyonmimi
- ベストアンサー率50% (8/16)
今、セルA1~E1に順に50、60、100、150、90入れ、yumehelpさんが、おっしゃっるような表を作ってみました。 まず、A2に=IF(A1<100,A1,100)と書き、B2には=IF(B1<100,B1,100)、C2~E2も同様に書きます。 そして、A3には、=IF(A1>100,A1-100,0)と書き、B3には=IF(A1>100,A1-100,0)、C2~E2も同様に書きます。 そして、2列目と3列目でグラフを作成します。 このままでは、X軸の目盛が、120などとなると思いますので、数値軸の上で右クリックし軸の書式設定で数値を変更して下さい。 また、2本目の棒は色が違うと思いますが、これも、データ毛列の書式設定で変えられます。 現在、元になるデータがどのように入っているのかわからないため、参考になるかわかりませんが、参考になれば幸いです。
お礼
ズバリ的中です。 回答ありがとうございました。
お礼
ズバリ的中です。 回答ありがとうございました。