![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
お世話になります。
Excel2010の棒グラフです。記号のグラフを追加できないでしょうか。
A列 B列
10
20 △
10
40 △
30
20と40を示す棒グラフのどこかに△記号を表示させることはできないでしょうか。
データとして△記号になっているので、数字等に置き換えることはできません。
データラベルに数値以外のセルを表示したい
http://ciao.aoten.jp/ciao/2012/02/post-fd1c.html
方法としてはこれなのですが、600行ほどあるため、なにか別の手段はないかと思い質問しました。
No.6ベストアンサー
- 回答日時:
DreamyCatさんの方法をアレンジしてみました。
作業列で別系列データを設ける
最初のセルに下記のような式を入れる
=IF(AND(C1="△",B1<=0,5),5,IF(C1="△",B1+5,NA()))
下方セルにコピー
上記データで系列を追加
グラフの種類を「折れ線グラフ」にする
データ系列の書式設定で
線の色を「なし」
マーカーのオプションから
マーカーの種類を「▲」
マーカーの塗りつぶしを「塗り潰しなし」
に設定する
IF関数式は今までのやり取りで明確にされた条件で作っています。
みなさまありがとうございました。この場をお借りしてお礼申し上げます。
xls88さまのご提案通り、関数で完成させました。
表示させるグラフ形式をこれから選んでいくところなので、
ひとまず関数で作り、完成バージョンはマクロでと考えました。
mitarashiさま
実際にマクロで作っていただき、画像もアップしていただきました。ありがとうございます。
DreamyCatさま
関数で表示させるアイディアをいただきました。ありがとうございます。
xls88さま
実際にマクロで作っていただき、関数で表示させる手順を示していただきました。
グラフの設定で表示も希望通りになりました。ありがとうございます。
追加の質問で誠に恐縮ですが、解決策がございましたら教えていただけるでしょうか。
1.別のグラフを持って来て、透過にして重ねました。
2.マクロが動いている関係だと思いますが、グラフの点滅が激しいです。2秒に1回点滅しているようです。
でこのとき、最前面のグラフエリアを選択状態にすると点滅が止まります。
選択したままでも、Excelの動作には支障は無いようでした。
このグラフを見るときは、選択しておく、ということでいいのでしょうか?
それとも、点滅を軽減する方法があるでしょうか?
No.7
- 回答日時:
>追加の質問で誠に恐縮ですが・・・
追加質問はできるだけ別スレッドを立てるようにお願いします。
>マクロが動いている関係だと思いますが、グラフの点滅が激しいです・・・
どんなマクロなのかコードを提示されないと判断ができません。
>最前面のグラフエリアを選択状態にすると点滅が止まります。
>選択したままでも、Excelの動作には支障は無いようでした。
マクロの中で選択させればどでしょうか。
>点滅を軽減する方法があるでしょうか?
効き目があるかどうかわかりかねますが動いているマクロの中で
画面の更新を抑止する
再計算を停止する
などの方法を試してみてください。
<参考>
画面更新を制御する(ScreenUpdatingプロパティ)
http://www.moug.net/tech/exvba/0010005.html
シートの再計算を設定する(EnableCalculationプロパティ)
http://www.moug.net/tech/exvba/0040055.html
数式の再計算
http://www.excel-vba.net/excel-range-029.html
この回答への補足
ありがとうございます。
再計算の設定など試してみましたが、点滅は止まりませんでした。
重ねたグラフは点滅していませんでした。
点滅しているグラフの項目は常時変動するため、点滅していることがわかりました。
見るときはグラフを選択状態にすることで対応することにしました。
No.5
- 回答日時:
#1です。
△をY=0の箇所に表示するニーズについて、X軸の目盛りのラベルを下端に設定した場合(当方の好みですが)に対応できるコードです。ご参考まで。
Sub test()
Dim myChart As Chart
Dim mySeries As Series
Dim yValueRange As Range
Dim i As Long
'ActiveSheetにグラフが一個ある事が前提
Set myChart = ActiveSheet.ChartObjects(1).Chart
'データ系列も一つだけが前提
Set mySeries = myChart.SeriesCollection(1)
With mySeries
'SeriesのFormulaからyvalueのセル範囲を取得
'例: =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$100,Sheet1!$B$2:$B$100,1) の$B$2:$B$100を取得
Set yValueRange = ActiveSheet.Range(Split(Split(mySeries.Formula, ",")(2), "!")(1))
For i = 1 To .Points.Count
.Points(i).ApplyDataLabels
'各Y値のセルの一つ右隣の値をデータラベルに設定
.Points(i).DataLabel.Text = yValueRange.Cells(i).Offset(, 1).Value
'毎回計算する必要は無いのですが手抜きです。律速になる場合は、ループの外で計算して下さい...
.Points(i).DataLabel.Top = convertToPlotareaPosY(myChart, 0) - .Points(i).DataLabel.Height / 2
Next i
End With
End Sub
'軸目盛りの値→グラフ上の座標に変換
'xlCategory対応を改造したので名残があります...
Private Function convertToPlotareaPosY(targetGraph As Chart, SetScale As Single) As Single
Dim PIH As Single, PIW As Single, PIT As Single, PIL As Single
Dim MaxScale As Single, MinScale As Single
Dim x As Single
On Error GoTo ErrorHandler
If targetGraph Is Nothing Then Exit Function
With targetGraph
With .Axes(xlValue)
MinScale = .MinimumScale
MaxScale = .MaximumScale
End With
With .PlotArea
PIH = .InsideHeight
PIW = .InsideWidth
PIT = .InsideTop - 0.25
PIL = .InsideLeft - 0.25
End With
End With
convertToPlotareaPosY = (MaxScale - SetScale) / (MaxScale - MinScale) * PIH + PIT
ErrorHandler:
Exit Function
End Function
![「Excel2010の棒グラフに数値以外の」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/a/1359307_5497e2c5df634/M.jpg)
No.4
- 回答日時:
>マイナス側の△はどこに表示されるでしょうか?できれば0の線上に表示・・・
Dim v As Variant
Dim t As Variant
Dim ftxt As String
Dim ws As String
Dim yadr As String
Dim i As Long
With ActiveChart
t = .Axes(xlCategory).top
With .SeriesCollection(1)
v = .values
ftxt = .Formula
ws = Split(Split(ftxt, ",")(2), "!")(0)
yadr = Split(ftxt, ",")(2)
.HasDataLabels = True
For i = 1 To .Points.Count
With .Points(i).DataLabel
.text = "=" & ws & "!" & Range(yadr)(i).Offset(, 1).Address
If v(i) <= 0 Then
.top = t - .Height
End If
End With
Next
End With
End With
データの書き換えはないのですか?
表示位置に関して変更時の追随ができなくなるとおもいます。
追随が必要ならシートイベントプロシージャを利用することになると思います。
No.3
- 回答日時:
提示されたデータに不可解な部分がありますが
数値データの隣に記号データがあるとして
系列1のデータラベルにセル参照式を入れる例を挙げてみます。
Dim ftxt As String
Dim ws As String
Dim yadr As String
Dim i As Long
With ActiveChart.SeriesCollection(1)
ftxt = .Formula
ws = Split(Split(ftxt, ",")(2), "!")(0)
yadr = Split(ftxt, ",")(2)
.HasDataLabels = True
For i = 1 To .Points.Count
With .Points(i).DataLabel
.text = "=" & ws & "!" & Range(yadr)(i).Offset(, 1).Address
End With
Next
End With
No.1
- 回答日時:
地道にやるのがお嫌なら、VBAしか無いと思います。
Collectionから引っ張り出してちょっとアレンジしてみました。
コード中のコメント以上の解説はご容赦いただきます。関心をお持ちになったら自習いただくか、他の回答をお待ち下さい。
Sub test()
Dim myChart As Chart
Dim mySeries As Series
Dim yValueRange As Range
Dim i As Long
'ActiveSheetにグラフが一個ある事が前提
Set myChart = ActiveSheet.ChartObjects(1).Chart
'データ系列も一つだけが前提
Set mySeries = myChart.SeriesCollection(1)
With mySeries
'SeriesのFormulaからyvalueのセル範囲を取得
'例: =SERIES(Sheet1!$B$1,Sheet1!$A$2:$A$100,Sheet1!$B$2:$B$100,1) の$B$2:$B$100を取得
Set yValueRange = ActiveSheet.Range(Split(Split(mySeries.Formula, ",")(2), "!")(1))
For i = 1 To .Points.Count
.Points(i).ApplyDataLabels
'各Y値のセルの一つ右隣の値をデータラベルに設定(手抜きで空白でも設定)
.Points(i).DataLabel.Text = yValueRange.Cells(i).Offset(, 1).Value
Next i
End With
End Sub
![「Excel2010の棒グラフに数値以外の」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/7/1359307_5497ed029c0a8/M.jpg)
この回答への補足
ありがとうございます。うっかりしましたが、マイナスの数値もあって0を中心として上下に伸びる棒グラフになっています。
このマクロで描かれる場合、マイナス側の△はどこに表示されるでしょうか?できれば0の線上に表示されるといいのですが、マクロなら指定できるでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) エクセルのグラフに上下限値の横棒を表示させたい 5 2022/12/12 11:09
- Excel(エクセル) Excelで日付のグラフへの表示 2 2022/04/15 11:04
- Excel(エクセル) Excelグラフについて 1 2022/06/16 16:06
- Excel(エクセル) Excelの複合グラフ(棒グラフと折れ線グラフ)で各棒グラフに名称を表示させたい 1 2022/08/14 23:26
- Excel(エクセル) Excelグラフについて 1 2023/05/12 16:26
- Excel(エクセル) Excelでグラフの種類「縦棒」でグラフを作ったのですが横軸が同じものが複数に分かれて表示されてしま 1 2022/12/26 22:39
- Excel(エクセル) EXCELでリターンキーが押されたらそのセルに特定の文字を表示したいのですが。 2 2022/08/07 12:58
- Excel(エクセル) この記号、手短(テミジカ)に日本語/英語で何と称されますか? 1 2022/07/25 16:12
- Excel(エクセル) <スプレッドシート>採用進捗 グラフ作成について 3 2022/10/23 15:52
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 偶数月の15日(土日祝...
-
Excelの数式について教えてくだ...
-
Excelのメニューについて
-
VLOOKUP FALSEのこと
-
エクセル内に読み込んが画像の...
-
【マクロ】1回目の実行後、2...
-
勤務外時間を出す表が作りたい
-
Excelで作成した出欠表から日付...
-
エクセルの数式について教えて...
-
【マクロ】参照渡しとモジュー...
-
Excelの条件付書式について教え...
-
【マクロ】シート追加時に同じ...
-
マクロを実行すると、セル範囲...
-
【マクロ】参照渡しについて。...
-
Excel 日付の表示が直せません...
-
エクセルで、数字の下4桁の0を...
-
【マクロ】Call関数で呼び出し...
-
別のシートの指定列の最終行を...
-
Excelのデーターバーについて
-
Excelでの文字入力について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】重複する同じ行を、...
-
Excelの条件付き書式のコピーと...
-
vba 印刷設定でのカラー印刷と...
-
VBA の単語の意味を教えて下さい。
-
Excel 日付の表示が直せません...
-
エクセル 同じ行の隣り合う数字...
-
エクセル条件付き書式について。
-
エクセルの数式につきまして
-
ファイル名の変更
-
エクセル 数字のみ抽出につて
-
Excelの開始ブックを固定したい...
-
エクセルの数式について教えて...
-
エクセルのセルをクリックする...
-
=INDIRECT(RIGHT(CELL("filenam...
-
エクスプローラーで見ることは...
-
Excelの関数で質問です
-
至急お願いいたします 屋上の備...
-
エクセルでセルに入力する前は...
-
関数を教えて下さい
-
Excel 関数での質問です
おすすめ情報